Centos 8 MySQL8 主从同步
主要描述MySQL主从同步不描述MySQL如何安装。
按照本文操作前提下需要提安装好MySQL8.0
开始操作
-
把数据库开启远程连接,参照文章 MySQL8.0设置远程访问权限
-
创建数据库,这是在主数据库配置。
-
CREATE DATABASE brief_test;# 创建数据库 CREATE TABLE `test` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', `service_name` varchar(50) NOT NULL COMMENT '自增', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; # 创建测试表 INSERT INTO `test` VALUES (1, 'master'); INSERT INTO `test` VALUES (2, 'slave1'); INSERT INTO `test` VALUES (3, 'slave2'); # 添加测试数据
编辑主从数据库配置
-
编辑主数据库配置
-
修改 /etc/my.conf,添加如下配置。 vim /etc/my.conf
-
[mysqld] #配置主库 server_id=1 #服务器id 不能重复 1,2,3,4这种以此类推 log_bin=master-bin log_bin-index=master-bin.index binlog-do-db=brief_test #需要同步的数据库名称 配置多个数据库需要配置多个binlog-do-db 例如 binlog-do-db=brief_test1 binlog-do-db=brief_test2 binlog-do-db=brief_test3 这种方式配置
-
保存,重启mysql服务。
-
systemctl restart mysqld
-
======================
-
修改从数据库
-
修改 /etc/my.conf,添加如下配置。
vim /etc/my.conf
-
[mysqld] server_id=2 #服务编号不能重复 read_only=on #设置为只读
-
重启mysql服务
-
systemctl restart mysqld
-
登录主数据库 执行
show master status
-
登录到从数据库 mysql -uroot -proot
-
执行命令
-
CHANGE MASTER TO MASTER_HOST='172.16.102.7', #主数据库ip MASTER_PORT=3306, #主数据库端口 MASTER_USER='proxysql', #主数据库复制账号 MASTER_PASSWORD='jishuzhai', #主数据库密码 MASTER_LOG_FILE='master-bin.000001', #刚才从master数据库查询file值 MASTER_LOG_POS=156; #刚才从master数据库查询postition值
-
-
执行
start slave;
-
然后执行
show slave status;
#查看slave状态 -
注意
Slave_io_Running
和Slave_SQL_Running
一定要是YES
关于清理binary日志
主从会产生大量的日志文件 可以使用以下方式自动清理
show binary logs;#查询日志
set GLOBAL binlog_expire_logs_seconds = 1296000 #设置日志过期时间为15天单位秒 超过15的会被自动清除
SELECT @@binlog_expire_logs_seconds #查询是否生效
flush logs;# 立即生效
使用navicat添加表的时候,从数据库会自动同步主数据库的数据