mysql主从搭建详细步骤

Posted bazingafraser

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql主从搭建详细步骤相关的知识,希望对你有一定的参考价值。

一 、系统环境:Centos 6.5

  • mysql版本:mysql-5.5.25a
  • Master:192.168.4.9
  • Slave :192.168.4.10

 

二、主从配置需要注意的点

  • 主从服务器操作系统版本尽量保持一致
  • Master和Slave版本要一致
  • Slave导入的Master备份数据要完整
  • Master开启了二进制日志
  • Slave开启了中继日志
  • Master和Slave  server_id值,唯一

 

三、主从配置步骤

Master配置

  • 查看server-id是否唯一
  • 建立主从授权用户
  • 确认二进制日志是否打开
  • 导出数据库数据(备份数据)
  • 将备份数据传输给Slave
  • Master和Slave服务器时间一致

 

Slave配置

  • 查看server-id是否唯一
  • 导入Master导出的数据(还原备份)
  • 建立主从关系
  • Slave和Master服务器时间一致

 

 

四、正式开始搭建

Master配置

1、导出Master数据

mysqldump -h192.168.4.9 -uroot  -p123456  --quick --routines --master-data=2 --single-transaction  --all-databases > data.sql

这里最主要的是--master-data=2 这个参数,否则在建立主从时找不到pos和binlog位置

[[email protected] mysql]# /usr/local/mysql/bin/mysqldump -h192.168.4.9 -uroot  -p123456  --quick --routines --master-data=2 --single-transaction  --all-databases > data.sql

2、检查server_id

       [[email protected] mysql]# cat /data/mysql/my.cnf |grep server-id

        server-id       = 1

 

 

3、检查binlog是否开启

[[email protected] mysql]# cat my.cnf |grep "log-bin"

log-bin=/data/mysql/mysql-bin

4、将备份传输给Slave

这里使用scp,大数据量,应该采取其他方式

[[email protected] ~]# scp /data/mysql/data.sql  [email protected]:/data/

5、创建并授权主从用户

grant replication slave on *.*  to [email protected]‘%‘ identified by  ‘123456‘;

flush privileges;

 

Slave配置

1、查看server-id是否唯一

[[email protected] ~]# cat /data/mysql/my.cnf |grep server-id

server-id       = 2

2、备份还原

[[email protected] ~]# /usr/local/mysql/bin/mysql -uroot -h192.168.4.10 -p </data/data.sql

登入数据库确认是否数据恢复完整

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| test               |

| wordpress_01       |

+--------------------+

5 rows in set (0.00 sec)

检查数据完整性,可以简单的抽查一些表的数据是否完整,我是看的行数

mysql> select count(*) from wp_usermeta;

+----------+

| count(*) |

+----------+

|       16 |

+----------+

 

 

3、建立主从关系

首先查看一下pos号和binlog位置

[[email protected] ~]# cat /data/data.sql |head  -26

CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000016‘, MASTER_LOG_POS=617; #主要是看这一行

登入数据库建立主从

CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000002‘, MASTER_LOG_POS=107, MASTER_HOST=‘192.168.4.9‘,MASTER_PORT=3306,MASTER_USER=‘repl‘,MASTER_PASSWORD=‘123456‘;

slave start; #启动从库

show slave status \G;查看主从状态

mysql> show slave status \G;

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 192.168.4.9     #Master 服务器IP

                  Master_User: repl                   #Master 创建的主从同步用户

                  Master_Port: 3306                  #Master 服务器端口

                Connect_Retry: 60

              Master_Log_File: mysql-bin.000002   #Master binlog

          Read_Master_Log_Pos: 107                     #Master  日志 pos号

               Relay_Log_File: relaylog.000002        #中继日志

                Relay_Log_Pos: 253                             #中继日志pos号

        Relay_Master_Log_File: mysql-bin.000002    #中继日志文件

             Slave_IO_Running: Yes       #Slave IO 状态

            Slave_SQL_Running: Yes     #Slave  SQL 状态

              Replicate_Do_DB:

          Replicate_Ignore_DB:

           Replicate_Do_Table:

       Replicate_Ignore_Table:

      Replicate_Wild_Do_Table:

  Replicate_Wild_Ignore_Table:

                   Last_Errno: 0

                   Last_Error:

                 Skip_Counter: 0

          Exec_Master_Log_Pos: 107 #执行主日志pos号

              Relay_Log_Space: 402

              Until_Condition: None

               Until_Log_File:

                Until_Log_Pos: 0

           Master_SSL_Allowed: No

           Master_SSL_CA_File:

           Master_SSL_CA_Path:

              Master_SSL_Cert:

            Master_SSL_Cipher:

               Master_SSL_Key:

        Seconds_Behind_Master: 0  #同步延时

Master_SSL_Verify_Server_Cert: No

                Last_IO_Errno: 0

                Last_IO_Error:

               Last_SQL_Errno: 0

               Last_SQL_Error:

  Replicate_Ignore_Server_Ids:

             Master_Server_Id: 1

1 row in set (0.00 sec)

 

 Read_Master_Log_Pos和Exec_Master_Log_Pos 值一致时可以认定为主从同步成功

Seconds_Behind_Master 主从是否在同步,是否有延迟

Master_Log_File: mysql-bin.000002  Master binlog是否正确

三项都没有问题,可以认证为主从同步成功

 

五、主从搭建过程中的问题

  • 确保备份数据的完整性
  • 确保导入时的备份,完全导入
  • 认真进行数据验证

案例

1、在主从建立时很容易产生 1062和1032,这样的报错,但是并不影响数据的完整性

解决方式:slave-skip-errors = 1062,1032

2、在数据导入从库时,从库会不断的产生binlog,所以在导入数据之前,

可以暂时将从库的binlog关闭,解决数据量的增长,或者等同步完成时,进行

对binlog数据的清理。

binlog 清理方式:

purge master logs to  ‘mysql-bin.000022‘;  #删除mysql-bin.000022这个之前的Log,根据实际情况判断删除

 

以上是关于mysql主从搭建详细步骤的主要内容,如果未能解决你的问题,请参考以下文章

史上最详细Docker部署Mysql主从复制,带每一步骤图!!!

史上最详细Docker部署Mysql主从复制,带每一步骤图!!!

史上最详细Docker部署Mysql主从复制,带每一步骤图!!!

史上最详细Docker部署Mysql主从复制,带每一步骤图!!!

NoSQL 之Redis主从复制哨兵和集群介绍及详细搭建步骤

MySQL主从备份详细步骤