今天整理下配置主从复制的过程。原理很简单,主库负责插入修改删除,产生log文件,丛库用授权的账号去读mysql操作记录,然后同步。在这里也很感谢我工作中的头,放手让我去做,生产环境配置的时候一同加班给我压阵!
首先服务器上的mysql已经配置完成。我选用的是 5.6.29 版本要统一。

停掉当前的业务,打包数据库myisam的直接打包数据目录放到FTP目录。在丛库的服务器上FTP到主库,get到从服务器上,保持数据库的一致性。

创建丛库同步的mysql账号,添加服务器权限( File, Replication Slave, Replication Client ),可以用Navicat去操作。多个丛库,就添加多个允许登陆的ip不一样而已。

CREATE USER 'test_slave'@'192.168.0.102' IDENTIFIED BY '123456';
GRANT FILE, REPLICATION SLAVE, REPLICATION CLIENT ON . TO 'test_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 = maindb  // 同步 maindb 库 其他库都不同步
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 = maindb
2、重启mysql数据库

stop slave;
change master to
master_host = '192.168.0.102',         // 主库地址
master_port = 3306,                // 主库端口
master_user = 'maindb',            // master端创建的用于主从同步的账户和密码
master_password = '**',           // 密码
master_log_file='mysql-bin.000019',      //master端记录的file值
master_log_pos=1238;                // master端记录的position值
看这两个参数 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;