mysql 主备搭建

为什么要复制数据库?

 

简单来说有以下几个用处:

1. 读写分离

通过MySQL复制可以实现读写分离,将读操作分布到多个不同的服务器上,减轻服务器的压力。

2. 备份

从库可以作为数据的异地实时备份。

3. 故障切换

当主库遇到故障,系统可以切换到从库,实现故障切换。

4. 升级测试

从库可作为测试服务器的数据库。

 

复制数据的步骤:

  1. 在主库上把数据更改记录到二进制日志(Binary Log)中。
  2. 备库将主库上的日志复制到自己的中继日志(Relay Log)中。
  3. 备库读取中继日志中的事件,将其在备库上重新执行一遍。

 具体操作步骤如下:

  1. 主备两台服务器安装相同版本的数据库,数据库的初始数据保持一致。
  2. (主库)配置同步账号
    1.    创建数据库复制用户:mysql>CREATE USER 'repl'@'172.16.127.83' IDENTIFIED BY '123456';
    2.    授权:mysql>grant replication slave on *.* to 'repl'@'172.16.127.83' ;

  3.(主库)修改/etc/my.cnf文件,注意确保:server-id 唯一

    1.  server-id=1
    2.  log-bin=mysql-bin
    3.  lower_case_table_names=1(数据表不区分大小写)

  4.(主库)重启master端

      1.   service mysqld restart

  5.(主库)查询主库上当前的二进制日志名和偏移量值,记录下file跟position的值,待会从库要用

      1.   mysql>show master status \G

  6.(从库)修改/etc/my.cnf文件,注意确保:server-id 唯一

    1.  server-id=2
    2.  lower_case_table_names=1(数据表不区分大小写)

  7.(从库)重启slave端

      1.  service mysqld restart

  8.(从库)对从数据库服务器做相应设置,指定复制使用的用户,主数据库服务器的IP、端口以及开始执行复制的日志文件和位置等
      1.  mysql>CHANGE MASTER TO MASTER_HOST='172.16.127.49',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000013',MASTER_LOG_POS=156;

  9. (从库)启动slave线程

      1.  mysql>start slave;

  10.  主库跟从库分别检查状态  

    1. 检查master的:mysql>show processlist\G      结果:看到上面的Command: Binlog Dump说明配置成功!

    2.检查slave的:mysql>show slave status \G       结果:提示:Slave_IO_Running和Slave_SQL_Running两个值为YES基本上成功了

posted @ 2020-10-12 16:37  海代码  阅读(1900)  评论(0编辑  收藏  举报