MySQL主从复制搭建

MySQL主从复制搭建

系统版本:Oracle Linux Server release 6.9

主服务器:

    IP:192.168.232.101

从服务器:

    IP:192.168.232.100

 

步骤:

  1. 主库开启binlog功能,并设置server_id(不能跟从库相同);
  2. 创建从库用于复制用的数据库账号;
  3. 为当前数据库做全备;
  4. 设置从库server_id(不能跟主库相同);
  5. 恢复主库的全备到从库;
  6. 配置从库master的信息;
  7. 开启同步;
  8. 状态检查;

 

 

具体操作如下:

1.主库开启binlog功能,并设置server_id

编辑vi /etc/my.cnf文件,并 [mysqld] 节点下加入如下内容:

 

2.创建从库用于复制用的数据库账号

grant replication slave on *.* to [email protected]'%.%.%.%' identified by '123'

 

3.为当前数据库做全备

mysqldump -uroot -p -A -B -x --master-data=2 > rep.sql

 

4.设置从库server_id

编辑vi /etc/my.cnf文件,并 [mysqld] 节点下加入如下内容:

5.恢复主库的全备到从库

mysql -uroot -p < rep.sql

 

6.配置从库master的信息

进入MySQL中执行如下命令

CHANGE MASTER TO

MASTER_HOST='192.168.232.101',

MASTER_PORT=3306,

MASTER_USER='rep',

MASTER_PASSWORD='123'

MASTER_LOG_FILE='mysql-bin.000002',

MASTER_LOG_POS=5660;

 

参数说明:

MASTER_HOST:主服务器 IP 地址

MASTER_PORT:主服务器端口

MASTER_USER:用于主从复制的账号

MASTER_PASSWORD:主从复制账号的密码

MASTER_LOG_FILE=:binlog文件(全备时主库最新的binlog文件名)

MASTER_LOG_POS=:binlog位置(全备时主库最新的binlog文件中的备份点)

 

7.开启同步

从库执行如下命令:

Mysql> Start slave

 

8.状态检查

从库执行如下命令:

Mysql> show slave status \G

        如果Slave_IO_Running、Slave_SQL_Running 都为YES,则表示成功。

 

从服务器开启log_slave_updates 这个参数是,从服务器可以作为其他服务器的主服务器,也就是:主 à à 从 模式;

 

 

主从切换

场景一、主宕机且无法开机

从库操作:

  1. show slave status \G 查看状态,看是否所有的binlog已经读过来了,是否丢数据
  2. 开启binlog且开启读写(show variables like ‘%read_only%’)
  3. stop slave
  4. reset master
  5. reset slave
  6. 记录show master status的binlog信息(后续主机修好后可配置同步)

 

场景二、主从正常,手动切换

切换操作同场景一

主转从操作同初次配置一样;

 

PS

# 主执行:

show master status # 记录File、Position

# 从执行:

Mysql> select master_pos_wait(File, Position);

可以使用此查询得到同步间隙为多少