1. 背景
本节将如何设置 MySQL 的主从同步。
2.设置 MySQL 的主从同步
简单讲分三个环节:
- 1、主数据库 开启 二进制日志
- 2、从数据库设置指向主数据库的配置参数 (change master to 指令)
- 3、启动slave (使用 start slave 指令)
具体操作日下:
步骤 1: 开启 二进制日志,和指定server-id — ( 配置主数据库 )
编辑 /etc/mysql/my.cnf 文件,增加如下设置:
[mysqld]
log-bin=mysql-bin
server-id=1
复制代码
- 注意: 要在 [mysqld] 章节下。
修改完毕后重启,可检查下是否开启成功(见本文扩展部分)。
步骤 2: 新建一个用于同步的mysql用户,并赋予 REPLICATION SLAVE 权限 — ( 配置主数据库 )
mysql> CREATE USER 'repl'@'%' IDENTIFIED BY '123456';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
mysql> FLUSH PRIVILEGES;
复制代码
步骤 3: 开启 二进制日志,和指定server-id — ( 配置 从数据库 )
编辑 /etc/mysql/my.cnf 文件,增加如下设置:
[mysqld]
server-id=2
复制代码
步骤4:修改从数据库指向的 ”主数据库“的地址 (在从数据库中配置)
使用 change master 指令进行参数设置,示例:
mysql> change master to master_host='192.168.1.8', master_user='repl', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=747;
复制代码
设置好后,检查一下:
mysql> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: 192.168.1.8
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 747
Relay_Log_File: 59b3f32743e5-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: No
复制代码
步骤5: 查看 主数据库的 二进制日志的偏移量 (在主数据库)
使用 指令,查看 Position 的值,示例如下:
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 747 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
复制代码
步骤6: 启动 从数据库的“同步功能”
使用 start slave 指令启动即可。
mysql> start slave
复制代码
至此,配置完毕。
3. 其他相关配置
4. 扩展
修改完主数据库配置后,可以检查下配置是否生效 (对应上文步骤1)
mysql> show variables like 'log%'
-> ;
+----------------------------------------+--------------------------------+
| Variable_name | Value |
+----------------------------------------+--------------------------------+
| log_bin | ON |
| log_bin_basename | /var/lib/mysql/mysql-bin |
| log_bin_index | /var/lib/mysql/mysql-bin.index |
mysql> show variables like 'server%';
+----------------+--------------------------------------+
| Variable_name | Value |
+----------------+--------------------------------------+
| server_id | 1 |
| server_id_bits | 32 |
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 747 | | | |
+------------------+----------+--------------+------------------+-------------------+
复制代码
以 docker 方式启动 mysql
docker run -di --name mysql_copy -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
复制代码
docker 里没有 vi编辑器 怎么办? 安装一个
apt-get update
apt-get install vim
复制代码
查看进程列表:
mysql> show processlist;
# 比如在从数据库看到:
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
| 5 | root | localhost | zoo | Query | 0 | starting | show processlist |
| 6 | system user | | NULL | Connect | 740 | Waiting for master to send event | NULL |
| 7 | system user | | NULL | Connect | 593 | Slave has read all relay log; waiting for more updates | NULL |
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
3 rows in set (0.00 sec)
复制代码
备份数据库时,锁定数据表和解锁的方法
在服务器上,设定一个锁,确保没有操作数据库,以便获得一致性。
FLUSH TABLES WITH READ LOCK;
复制代码
主库备份完成后,恢复写操作
UNLOCK TABLES;
复制代码
5.参考:
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END