目录

MySQL 主从配置

目录

mysql 主从复制指两个服务器之间数据库的同步,当主服务器的数据进行了变更,从服务器也会自动更新,其过程是通过 bin-log 日志实现的,本质是 binlog 日志的传输。

mysql 主从分两个角色

1、主服务器 master

2、从服务器 slave

主服务器 MySQL 配置

1
2
3
4
5
6
#/etc/my.cnf
[mysqld]
log-bin=mysql-bin   // [必须] 启用二进制日志
server-id=1         // [必须] 服务器唯一 ID,默认是 1,一般取 IP 最后一段
binlog-do-db=target_db_name   // [可选] 设置需要同步的数据,如果不设置将同步所有数据库
binlog_ignore_db=mysql  // [可选] 忽略 mysql 数据,因为mysql数据库是 mysql 的一些帐户存放,这个没有必要同步

从服务器 MySQL 配置

1
2
3
[mysqld]
log-bin=mysql-bin   // [必须] 启用二进制日志
server-id=2       // [必须] 服务器唯一 ID,默认是 1,一般取 IP 最后一段

登录主服务器为从服务器授权

1
GRANT REPLICATION SLAVE ON *.* to 'sync'@'%' identified by 'sync'; // 不建议使用 root

查看主服务器的状态

1
2
3
4
5
6
7
show master status;
mysql> show master status;
+------------------+----------+------------------------------+------------------+
| File             | Position | Binlog_Do_DB                 | Binlog_Ignore_DB |
+------------------+----------+------------------------------+------------------+
| mysql-bin.000075 |   101236 | target_db_name,target_db_name| mysql,mysql      |
+------------------+----------+------------------------------+------------------+

登录从服务器配置

1
2
3
4
5
6
7
mysql> CHANGE MASTER TO
    -> MASTER_HOST = 'master_ip',
    -> MASTER_USER ='sync',
    -> MASTER_PASSWORD='sync_pwd',
    -> MASTER_PORT=3306,
    -> MASTER_LOG_FILE='mysql-bin.000075',
    -> MASTER_LOG_POS=101236;

开启从服务器的复制功能

1
START SLAVE

开查看从服务器的状态

1
2
3
4
5
show slave status

# 查询后存在如下键值
Slave_IO_Running = Yes
Slave_SQL_Running = Yes

修改从服务器同步配置信息

1
2
CHANGE MASTER TO MASTER_HOST='another_master_ip';
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000012'MASTER_LOG_POS=32106;
1
2
SLAVE STOP // 停止同步
SLAVE START // 恢复同步