Mysql主从复制,实现读写分离

   今天整理下配置主从复制的过程。原理很简单,主库负责插入修改删除,产生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;


评论