ubuntu mysql8.0实现主从复制

安装环境:ubuntu20.04+mysql8.0.22+异步复制(mysql8.0数据库安装

服务器:

  • 主机: 192.168.247.129
  • 从机: 192.168.247.130

一. 主机

1.1 修改配置文件

[mysqld]

# 主从配置-主机(所有配置必须写在[mysqld]下)
server-id                  = 0001 # 服务器id,唯一
log_bin                    = /var/log/mysql/mysql-bin.log # 二进制日志,实现主从的关键
binlog_format              = mixed # 日志格式
binlog_expire_logs_seconds = 604800 # 日志过期的时间秒数
max_binlog_size            = 200M # 最大二进制日志文件
binlog_do_db               = test # 同步的数据库

1.2 授权允许从机读取主机文件

# 创建一个新账号或使用已有账号(这里使用已有账号),这个账号指的是主机上的账号
mysql> grant replication slave on *.* to '用户名'@'%';
mysql> flush privileges;

1.3 重启服务器

systemctl restart mysql

1.4 获取主机状态,记录File和Position,用于从机同步主机

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      544 | test         |                  |                   |
+------------------+----------+--------------+------------------+-------------------+

二. 从机

2.1 修改配置文件

[mysqld]

# 主从配置-从机(所有配置必须写在[mysqld]下)
server-id = 0002 # 服务器id,唯一
skip_slave_start
read_only

2.2 重启服务器

systemctl restart mysql

2.3 连接主机

change master to master_host='192.168.247.129', # 主机ip
master_port=3306,
master_user='用户名', # 1.2 中授权的用户
master_password='密码',
master_log_file='mysql-bin.000001', # 1.4 中的File
master_log_pos=544; # 1.4 中的Position

2.4 启动slave数据同步

# 启动slave数据同步
mysql> start slave;
# 停止slave数据同步(若有需要)
mysql> stop slave;
# 删除master的binlog,即手动删除所有的binlog日志
mysql> reset master;
# 删除slave的中继日志,用于处理-调试-阶段主从库出现不一致导致从库不能复制的错误
# 生产环境不建议使用该命令,除非binlog的数据真的不需要
mysql> reset slave;

2.5 查看slave信息

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.247.129
                  Master_User: guocp
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 544
               Relay_Log_File: guocpserver-relay-bin.000002
                Relay_Log_Pos: 324
        Relay_Master_Log_File: mysql-bin.000001
            Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
...

Slave_IO_Running和Slave_SQL_Running都为yes,则表示同步成功。

三. 在异步复制基础上修改为半同步复制

3.1 先确认MySQL服务器是否支持动态增加插件

# 输出结构为YES即为可以
mysql> select @@have_dynamic_loading

3.2 主机安装插件

# 安装插件
mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
# 验证安装,输出行中有semisync_master.so即为成功
mysql> select * from mysql.plugin;

3.3 主机启用插件

# 临时设置
mysql> set global rpl_semi_sync_master_enabled=1;
mysql> set global rpl_semi_sync_master_timeout=30000;
# 可写入到mysqld配置下

3.4 从机安装插件

# 安装插件
mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
# 验证安装,输出行中有semisync_slave.so即为成功
mysql> select * from mysql.plugin;

3.5 从机启用插件

mysql> set global rpl_semi_sync_slave_enabled=1;
mysql> stop slave io_thread;start slave io_thread;

3.6 查看主从复制信息

# 查看主从复制信息
mysql> show status like '%semi_sync%';
# 查看半同步复制状态
mysql> show variables  like "rpl_semi_sync_%_enabled";

PS

  1. 主机mysql命令行执行show slave hosts;,可以查看当前连接的从机
  2. 如果主机原来已有数据,从机是不会同步的,需要自行同步数据主从复制-同步已有数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值