软件介绍
Centos版本: CentOS Linux release 7.6.1810
系统内核版本: Linux version 3.10.0-957.12.2.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (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)
操作步骤
新建 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> -- 保持当前会话的连接状态,不要退出
新建 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;
新建 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;
在主机器 mysql 进行操作,查看从机器 mysql 对应库有无相应变化。
指导文档
https://dev.mysql.com/doc/refman/5.7/en/replication-configuration.html
潦草拙笔,错误和不当之处,还望不吝赐教!