今天整理下配置主从复制的过程。原理很简单,主库负责插入修改删除,产生log文件,丛库用授权的账号去读mysql操作记录,然后同步。在这里也很感谢我工作中的头,放手让我去做,生产环境配置的时候一同加班给我压阵!
首先服务器上的mysql已经配置完成。我选用的是 5.6.29 版本要统一。
停掉当前的业务,打包数据库myisam的直接打包数据目录放到FTP目录。在丛库的服务器上FTP到主库,get到从服务器上,保持数据库的一致性。
创建丛库同步的mysql账号,添加服务器权限( File, Replication Slave, Replication Client ),可以用Navicat去操作。多个丛库,就添加多个允许登陆的ip不一样而已。
CREATE USER 'yusure_slave'@'192.168.0.102' IDENTIFIED BY '123456';
GRANT FILE, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'yusure_slave'@'192.168.0.102';
master主服务器上设置:
1、编辑my.ini文件
server-id = 1 // 添加server-id必须为1到232–1之间的一个正整数
log-bin = mysql-bin // 会在mysql的data目录生成
binlog-do-db = gaoyipin // 同步 gaoyipin 库 其他库都不同步
binlog-ignore-db = mysql //不同步
2、重启mysql数据库
3、记录当前的二进制日志名和偏移量
show master status; //得到主服务器上当前的二进制日志名和偏移量
slave从服务器上设置(多个丛库server-id依次+1):
1、编辑my.cnf文件
server-id = 2 // slave的ID号,此处一定要大于master端。
replicate-do-db = gaoyipin
2、重启mysql数据库
stop slave;
change master to
master_host = '192.168.0.102', // 主库地址
master_port = 3306, // 主库端口
master_user = 'gaoyipin', // master端创建的用于主从同步的账户和密码
master_password = '**********', // 密码
master_log_file='mysql-bin.000019', //master端记录的file值
master_log_pos=1238; // master端记录的position值
start slave;
show slave status;
看这两个参数 Slave_IO_Running Yes Slave_SQL_Running Yes 那就证明主从正常了
show processlist; // 显示从服务器上的进程
注意:主从数据库初始信息要相同,包括表结构、表数据、编码等,如果不相同,则将master主服务器中的信息先备份,然后再导入到从服务器。
********************** 跳过错误 *****************************
停止从库
stop slave;
查看从库状态
show slave status;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 #跳过一个事务
开启从库
start slave;