https://www.cnblogs.com/rwxwsblog/p/4542417.html
http://www.cnblogs.com/gl-developer/p/6170423.html
Mysql主从复制的实现原理图大致如下(来源网络):
实现MySQL主从复制需要进行的配置:
- 主服务器:
- 开启二进制日志
- 配置唯一的server-id
- 获得master二进制日志文件名及位置
- 创建一个用于slave和master通信的用户账号
- 从服务器:
- 配置唯一的server-id
- 使用master分配的用户账号读取master二进制日志
- 启用slave服务
主数据库:182.92.172.80 /linux
从数据库:123.57.44.85 /linux
一、主库修改
找到主数据库的配置文件my.cnf(或者my.ini),我的在/etc/my.cnf,在[mysqld]部分插入如下两行:
[mysqld] log-bin=mysql-bin #开启二进制日志 server-id=1 #设置server-id
# 不同步哪些数据库 binlog-ignore-db = mysql binlog-ignore-db = test # 只同步哪些数据库,除此之外,其他不同步 binlog-do-db = claim_oauth
binlog-do-db = claim_tpa
重启mysql
systemctl restart mysqld;
关闭mysql
systemctl stop mysqld.service
创建用于同步的用户和密码
mysql> CREATE USER 'insure'@'172.16.120.189' IDENTIFIED BY 'Password321!';#创建用户 mysql> GRANT REPLICATION SLAVE ON *.* TO 'insure'@'172.16.120.189';#分配权限 mysql>flush privileges; #刷新权限
查看master状态
mysql > SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000003 | 73 | test | manual,mysql | +------------------+----------+--------------+------------------+
二、修改从库
修改my.cnf配置文件 cd /etc/my.cnf
[mysqld] server-id=2 #设置server-id,必须唯一
启动slave同步依次执行以下三步
stop slave;
CHANGE MASTER TO
MASTER_HOST='172.16.120.190',
MASTER_USER='insure',
MASTER_PASSWORD='Password321!',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=929;
start slave;
查看slave状态
show slave status\G;
1. 对于机器重启情况, 可手动执行stop slave. 在正常关闭mysql, 重启后,手动start slave, 应该就可以正常同步。
2. 线上系统,重启一定要小心, 重启后监控相关模块是否启动,可以增加mysql slave工作监控。