MySQL主从复制

参考:
https://dev.mysql.com/doc/refman/5.7/en/replication.html

MySQL版本5.7

Master机器地址192.168.6.31
Slave机器地址192.168.6.58

Master机器(192.168.6.31)配置

修改MySQL的my.cnf文件(位于/etc下)

在文件的mysqld节下添加以下内容,如果已有该项,请修改该项的值如下:

[mysqld]
#Master复制配置
#打开log-bin功能
log-bin=mysql-bin
#唯一的server-id,int型,大于0
server-id=1
#在innodb引擎中为保证最大可能的一致性,使用以下两行配置
innodb_flush_log_at_trx_commit=1
sync_binlog=1

在shell中重启Mysql

service mysql restart;

登陆mysql

mysql –uroot –p

输入密码后执行以下SQL,创建复制用户

CREATE USER 'repl'@'192.168.6.58' IDENTIFIED BY 'repl';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.6.58';

通过SQL锁定主服务器并查看当前日志点

FLUSH TABLES WITH READ LOCK;

在==另一个会话==(可通过SQL图形化工具或在另一个shell中连接上mysql)中使用SQL查询当前日志点,并记录查询出的LOG_FILE和LOG_POS值

SHOW MASTER STATUS;

在shell中执行命令导出Master数据

mysqldump -uroot -p --all-databases --master-data > dbdump.sql

将dbdump.sql文件移动到备服务器上

Slave机器(192.168.6.58)配置

登陆mysql

mysql –uroot –p

使用SQL导入Master导出的数据,dbdump.sql请修改为包含目录的地址,如/usr/local/ dbdump.sql

source dbdump.sql

在==Master机器==执行SQL解除锁定
UNLOCK TABLES;
修改备服务器MySQL的my.cnf文件(位于/etc下)
在文件的mysqld节下添加以下内容,如果已有该项,请修改该项的值如下:

[mysqld]
#唯一值,必须与主服务器不同
server-id=2

重启备服务器mysql

service mysql restart

在备服务器执行SQL, ==MASTER_LOG_FILE和MASTER_LOG_POS的值需配置为上文SHOW MASTER STATUS 命令查询到的值==

CHANGE MASTER TO
   MASTER_HOST='192.168.6.31',
    MASTER_USER='repl',
    MASTER_PASSWORD='repl',
   MASTER_LOG_FILE='mysql-bin.000001',
   MASTER_LOG_POS=595;

在备服务器执行SQL启动复制

START SLAVE;

从服务器Mysql不能执行DML(数据管理语句)和DDL(数据定义语句),否则将从服务器与主服务器数据不一致,将数据复制将停止。只能通过在主服务器上执行DML(数据管理语句)和DDL(数据定义语句),通过数据复制自动在从服务器上同步执行后的状态。

验证

在主服务器数据库表中依次新增记录、修改该记录、删除该记录,查看从服务器是否也对应自动新增记录、修改该记录、删除该记录。

如果成功,则表示复制正常运行。

如果失败,请检查位于/var/log/mysqld.log的复制日志,查找原因

常见问题检查如下
- 防火墙端口是否开放
- 主从的MYSQL_UUID相同,在Slave服务器/var/lib/mysql/auto.cnf中的值并重启数据库

主从复制常用命令

Master机:
查看Master状态
show master status;
Slave从机:
查看Slave状态
show slave status;
停止复制
stop slave;
启动复制
start slave;

复制故障解决

如果Master宕机,Slave作为读写服务器。如果想启动Master并重新提供Master /Slave服务,需要重新进行日志复制中从FLUSH TABLES WITH READ LOCK开始的配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值