前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL主从复制搭建

MySQL主从复制搭建

原创
作者头像
code-x
修改2022-08-17 11:51:59
5560
修改2022-08-17 11:51:59
举报
文章被收录于专栏:code-xcode-x

master

代码语言:txt
复制
docker run  -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 --network rootnet --ip 172.18.0.10 -v /usr/soft/mysql-master/data:/var/lib/mysql:rw -v /usr/soft/mysql-master/log:/var/log/mysql:rw -v /usr/soft/mysql-master/config/my.cnf:/etc/mysql/my.cnf:rw -v /etc/localtime:/etc/localtime:ro --name mysql8-master -d mysql

my.cnf

代码语言:txt
复制
###主数据库配置
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Custom config should go here
!includedir /etc/mysql/conf.d/

default_authentication_plugin= mysql_native_password

# 主从同步设置
# 设置同步的binary log二进制日志文件名前缀, 默认为binlog; 在MySQL 8.0中, 无论是否指定--log bin选项, 默认情况下都会启用二进制日志记录, 并将log_bin系统变量设置为ON
log-bin=mysql-bin
# 服务器唯一id,默认为1,值范围为1~2^32−1. 主数据库和从数据库的server-id不能重复
server-id=1

###可选配置
# 需要主从复制的数据库,如多个则重复配置
binlog-do-db=test
# 复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步),如多个则重复配置
binlog-ignore-db=mysql
# 为每个session分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M
# 主从复制的格式(mixed, statement, row 默认格式是statement. 建议是设置为row, 主从复制时数据更加能够统一)
binlog_format=row
# 配置二进制日志自动删除/过期时间,单位秒,默认值为2592000,即30天; 8.0.3版本之前使用expire_logs_days, 单位天数,默认值为0, 表示不自动删除.
binlog_expire_logs_seconds=2592000
# 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断,默认OFF关闭,可选值有OFF、all、ddl_exist_errors以及错误码列表。8.0.26版本之前使用slave_skip_errors
# 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062

创建用户

CREATE USER 'repl'@'172.18.0.11' IDENTIFIED BY '123456';

授权

GRANT REPLICATION SLAVE ON . TO 'repl'@'172.18.0.11';

slave

代码语言:txt
复制
docker run  -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456  --network rootnet --ip 172.18.0.11  -v /usr/soft/mysql-slave/data:/var/lib/mysql:rw -v /usr/soft/mysql-slave/log:/var/log/mysql:rw -v /usr/soft/mysql-slave/config/my.cnf:/etc/mysql/my.cnf:rw -v /etc/localtime:/etc/localtime:ro --name mysql8-slave -d mysql

mf.cnf

代码语言:txt
复制
###主从数据库配置核心部分
[mysqld]
# 设置同步的binary log二进制日志文件名前缀,默认是binlog
log-bin=mysql-bin
# 服务器唯一id,默认为1,值范围为1~2^32−1. ;主数据库和从数据库的server-id不能重复
server-id=2

###可选配置
# 需要主从复制的数据库 ,如多个则重复配置
replicate-do-db=test
# 复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步) ,如多个则重复配置
binlog-ignore-db=mysql
# 为每个session分配的内存,在事务过程中用来存储二进制日志的缓存 
binlog_cache_size=1M
# 主从复制的格式(mixed,statement,row,默认格式是statement。建议是设置为row,主从复制时数据更加能够统一) 
binlog_format=row
# 配置二进制日志自动删除/过期时间,单位秒,默认值为2592000,即30天;8.0.3版本之前使用expire_logs_days,单位天数,默认值为0,表示不自动删除。
binlog_expire_logs_seconds=2592000
# 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断,默认OFF关闭,可选值有OFF、all、ddl_exist_errors以及错误码列表。8.0.26版本之前使用slave_skip_errors
# 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
replica_skip_errors=1062
# relay_log配置中继日志,默认采用 主机名-relay-bin 的方式保存日志文件 
relay_log=replicas-mysql-relay-bin  
# log_replica_updates表示slave是否将复制事件写进自己的二进制日志,默认值ON开启;8.0.26版本之前使用log_slave_updates
log_slave_updates=ON
# 防止改变数据(只读操作,除了特殊的线程)
read_only=ON

开启

代码语言:txt
复制
SHOW MASTER STATUS;
代码语言:txt
复制
CHANGE REPLICATION SOURCE TO SOURCE_HOST='172.18.0.10', SOURCE_PORT=3306, SOURCE_USER='repl', SOURCE_PASSWORD='123456', SOURCE_LOG_FILE='mysql-bin.000001', SOURCE_LOG_POS=2704;
代码语言:txt
复制
## 开启
START REPLICA;
## 关闭
STOP REPLICA;
代码语言:txt
复制
SHOW REPLICA STATUS;
假如显示 Slave_IO_Running/Replica_IO_Running和Slave_SQL_Running/Replica_SQL_Running 为 Yes
以及Slave_IO_State/Replica_IO_State 为 Waiting for master to send event/Waiting for source to send event
则证明主从复制成功

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • master
  • slave
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档