通过 MySQL Shell 配置数据库主从

MySQL 主从复制配置指南

1. 前提

在进行 MySQL 主从复制配置之前,请确保已准备好两台单机 MySQL 实例。如果是使用 Docker 部署,务必使用 host 网络模式。

  • 主服务器(Master):192.168.1.10
  • 从服务器(Slave):192.168.1.20

2. 安装 MySQL Shell

首先,安装 MySQL Shell,这是 MySQL 官方提供的命令行工具,用于管理 MySQL 数据库和执行复制操作。

wget https://cdn.mysql.com/archives/mysql-shell/mysql-shell-8.0.34-1.el7.x86_64.rpm 
yum install mysql-shell -y  --nogpgcheck

3. 配置 InnoDB ReplicaSet

3.1 测试连接

使用 MySQL Shell 测试与主服务器的连接:

mysqlsh --mysql -u root -h192.168.1.10 -P3306 -p123456 -C

3.2 查看状态

在 MySQL Shell 中查看服务器状态:

MySQL 192.168.1.10:3306 ssl JS > shell.status()

3.3 修改 Master MySQL 配置并重启

为主服务器修改 MySQL 配置文件 /etc/mysql/my.cnf

docker cp mysqlnew8:/etc/mysql/my.cnf /root/my.cnf
echo "server_id=10" >> /root/my.cnf
echo "gtid_mode=ON" >> /root/my.cnf
echo "enforce_gtid_consistency=ON" >> /root/my.cnf
echo "report_host=192.168.1.10" >> /root/my.cnf
docker cp /root/my.cnf mysqlnew8:/etc/mysql/my.cnf
docker restart mysqlnew8

3.4 修改 Slave MySQL 配置并重启

为从服务器修改 MySQL 配置文件 /etc/mysql/my.cnf

docker cp mysqlnew8:/etc/mysql/my.cnf /root/my.cnf
echo "server_id=20" >> /root/my.cnf
echo "gtid_mode=ON" >> /root/my.cnf
echo "enforce_gtid_consistency=ON" >> /root/my.cnf
echo "report_host=192.168.1.20" >> /root/my.cnf
echo "read_only=1" >> /root/my.cnf
docker cp /root/my.cnf mysqlnew8:/etc/mysql/my.cnf
docker restart mysqlnew8

3.5 修改 hosts 文件

在两台 MySQL 主机上修改 hosts 文件:

# 添加以下条目
192.168.1.10 mysql-rs-1
192.168.1.20 mysql-rs-2

3.6 初始化第一个实例并创建 ReplicaSet 管理员用户

使用 MySQL Shell 初始化第一个实例并创建 ReplicaSet 管理员用户 rsadmin

MySQL 192.168.1.10:3306 ssl JS > dba.configureReplicaSetInstance('root@mysql-rs-1:3306', {clusterAdmin: "'rsadmin'@'%'"})

3.7 创建 ReplicaSet

使用 MySQL Shell 创建一个名为 rstest 的 ReplicaSet:

MySQL 192.168.1.10:3306 ssl JS > var rs = dba.createReplicaSet("rstest")

3.8 初始化第二个实例并创建 ReplicaSet 管理员用户

使用 MySQL Shell 初始化第二个实例并创建 ReplicaSet 管理员用户 rsadmin

MySQL 192.168.1.10:3306 ssl JS > dba.configureReplicaSetInstance('root@mysql-rs-2:3306', {clusterAdmin: "'rsadmin'@'%'"})

3.9 连接到副本集并添加第二个实例

连接到 ReplicaSet 并将第二个实例添加到副本集:

MySQL 192.168.1.10:3306 ssl JS > var rs = dba.getReplicaSet()
MySQL 192.168.1.10:3306 ssl JS > rs.addInstance('mysql-rs-2:3306')

3.10 第一次同步

第一次同步选默认 Clone 即可。这个过程可能会很长,请使用 tmux 或类似工具进行操作。

原创内容未经允许禁止转载!!!!!

原创内容未经允许禁止转载!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值