【Linux】MySQL 基于二进制日志位置的主从配置

软件介绍

  • Centos版本: CentOS Linux release 7.6.1810
  • 系统内核版本: Linux version 3.10.0-957.12.2.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Tue May 14 21:24:32 UTC 2019
  • MySQL 版本: 5.7.26
  • 本案例配置一主一从(master 所在机器:192.168.56.2, slave 所在机器: 192.168.56.3)

操作步骤

  1. 新建 shell 会话 A 到 192.168.56.2,开放用于数据库 tcp 连接的 3306 端口,配置 mysql 并重启服务。所用命令列表类似于下:
# 开放用于数据库 tcp 连接的 3306 端口
[root@localhost ~]# firewall-cmd --add-port=3306/tcp --permanent

[root@localhost ~]# vi /etc/my.cnf
# 编辑 mysql 配置文件,在 [mysqld] 节段添加如下两句:
# log-bin=mysql-bin
# server-id=1

# 重启 mysql 服务
[root@localhost ~]# /etc/init.d/mysqld restart

# 登录 mysql 管理界面查看 master 相关信息并备份数据库
[root@localhost ~]# /usr/local/mysql/bin/mysql -u root -p
# 输入你的数据库密码

# root 用户授权(包含主从复制权限)
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;

mysql> -- 给所有的数据表加一把读锁(生产环境慎用)
mysql> flush tables with read lock;
mysql> -- 保持当前会话的连接状态,不要退出
  1. 新建 shell 会话 B 到 192.168.56.2,查看 mysql 的 master 相关信息并备份数据库。所用命令列表类似于下:
[root@localhost ~]# /usr/local/mysql/bin/mysql -u root -p
# 输入你的数据库密码

mysql> -- 查看 mysql 的 master 相关信息
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      154 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
# 记 File 列数据为 your_log_file
# 记 Position 列数据为 your_log_file_position。

mysql> \q --退出 mysql 管理界面

# 备份数据库(全库)到文件 /root/dbdump.db
[root@localhost ~]# /usr/local/mysql/bin/mysqldump --all-databases --master-data > dbdump.db

# 在会话 A 中的 mysql 管理界面释放读锁
A  mysql> unlock tables;
  1. 新建 shell 会话 C 到 192.168.56.3,开放用于数据库 tcp 连接的 3306 端口,导入主机器数据库数据,配置 mysql 并重启服务,在 mysql 管理界面进行 master 相关配置。所用命令列表类似于下:
# 开放用于数据库 tcp 连接的 3306 端口
[root@localhost ~]# firewall-cmd --add-port=3306/tcp --permanent

# 开启 mysql 服务
[root@localhost ~]# /etc/init.d/mysqld start

# 导入数据
[root@localhost ~]# /usr/local/mysql/bin/mysql -u root -p
# 输入你的数据库密码
mysql> source /root/dbdump.db;
mysql> \q

[root@localhost ~]# vi /etc/my.cnf
# 编辑 mysql 配置文件,在 [mysqld] 节段添加如下配置:
# server-id=2

# 重启 mysql 服务
[root@localhost ~]# /etc/init.d/mysqld restart

# 配置主信息
[root@localhost ~]# /usr/local/mysql/bin/mysql -u root -p
# 输入你的数据库密码
mysql> change master to
     > master_host='192.168.56.2',
     > master_user='root',
     > master_password='your password for root',
     > master_log_file='your_log_file',
     > master_log_pos='your_log_file_position';
mysql> -- 开启从复制线程
mysql> start slave;
  1. 在主机器 mysql 进行操作,查看从机器 mysql 对应库有无相应变化。

指导文档

https://dev.mysql.com/doc/refman/5.7/en/replication-configuration.html

潦草拙笔,错误和不当之处,还望不吝赐教!

你可能感兴趣的:(MySQL,Linux)