当前位置:网站首页>Docker搭建Mysql一主一从
Docker搭建Mysql一主一从
2022-08-10 08:18:00 【苦 糖 果】
1.启动两个mysql节点,分别对应3307,3317端口
docker run -p 3307:3306 --name mysql-master -v /mydata/mysql/master/conf:/etc/mysql -v /mydata/mysql/master/logs:/var/log/mysql -v /mydata/mysql/master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
docker run -p 3317:3306 --name mysql-slave01 -v /mydata/mysql/slave/conf:/etc/mysql -v /mydata/mysql/slave/logs:/var/log/mysql -v /mydata/mysql/slave/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
2. 修改配置
2.1 修改主库配置
vi /mydata/mysql/master/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='set collation_connection=utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
server_id=1
log-bin=mysql-bin
read-only=0
binlog-do-db=user_db #设置需要同步的数据库
#屏蔽系统库同步
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
2.2 修改从库配置
vi /mydata/mysql/slave/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='set collation_connection=utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
server_id=2 #主从模式下server_id不能重复
log-bin=mysql-bin
read-only=1 #开启只读
replicate_wild_do_table=user_db.%
replicate_wild_ignore_table=sys.%
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%
可以在Slave上使用 replicate_wild_do_table和 replicate_wild_ignore_table 来解决跨库更新的问题
3. 重启mysql,分配从库复制权限
重启mysql
docker restart mysql-master mysql-slave01
进入mysql实例内部
docker exec -it mysql-master /bin/bash
连接mysql,然后输入密码
mysql -u root -p
查看root账号权限
select * from mysql.user where user='root'\G;
权限都有,如果没有,可以使用以下命令创建
全局权限,作用于整个MySQL实例,这些权限信息保存在mysql库的user表里。给用户’root赋一个最高权限:
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
添加用来主从复制的账号:记得末尾带上分号
grant replication slave on *.* to 'backup'@'%' identified by '123456';
查看主库状态:
show master status\G;
退出mysql
exit
退出mysql容器
exit
4. 从库开启主从配置
进入mysql实例内部
docker exec -it mysql-slave01 /bin/bash
连接mysql,然后输入密码
mysql -u root -p
修改从库指向到主库,使用上一步记录的文件名以及位点
change master to master_host='192.168.1.117',master_user='backup', master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0,master_port=3307;
启动同步
start slave;
查看从库状态,该命令在可视化界面执行观察更方便
SHOW SLAVE STATUS;

Slave_IO_Running 不是 YES,猜测是网络问题
停止同步
stop slave;
因为使用的是腾讯元服务器,改成内网地址试试
change master to master_host='10.0.4.14',master_user='backup', master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0,master_port=3307;
启动同步
start slave;
查看从库状态,双yes一切正常
5. 验证
在主库创建数据库和表
CREATE DATABASE `user_db`
CREATE TABLE `t_user` (
`user_id` BIGINT(20) NOT NULL,
`username` VARCHAR(64) DEFAULT NULL,
`ustatus` VARCHAR(32) DEFAULT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
插入一条数据,进入从库查看发现库表结构及数据均已同步成功。
边栏推荐
- 搭建 risc-v 编译环境
- FFT模板
- Uni applet Tencent map polygon background transparency
- 34. Talk about why you want to split the database?What methods are there?
- IDLE development wordCount program (5)
- 一文2600字手把手教你编写性能测试用例
- 关于数据中心的设计方案,数据中心网络规划设计
- Is the write performance of raid5 faster than raid10?
- Rust学习:6.4_复合类型之枚举
- 速卖通卖家如何抓住产品搜索权重
猜你喜欢
随机推荐
NaiveUI中看起来没啥用的组件(文字渐变)实现原来这么简单
LaTeX出现错误代码Command \algorithmic already defined
Pieces of TensorFlow 2.9 (1)
编程老手如何在autojs和冰狐智能辅助之间选择?
90. (cesium house) cesium height monitoring events
ABAP Data Types 和XSD Type 映射关系以及XSD Type属性
Solve the problem that the win10win7win8 system cannot find the specified module and cannot register the desert plug-in
进程管理(动态的)
[深入研究4G/5G/6G专题-56]: L3信令控制-5-无线承载管理
Unity—UGUI control
The precise effect of network integration promotion outsourcing in the era of Internet of Things-Shenzhen Win-Win World News
WooCommerce installation and rest api usage
大体来讲,网站会被攻击分为几种原因
30条实用MySQL优化法则
[机缘参悟-65]:《兵者,诡道也》-7-三十六计解读-败战计
Relaxation class: the boss will martial arts, who also can not hold up against!The charm of six sigma training
机器人控制器编程实践指导书旧版-实践一 LED灯(数字量)
2022-08-01 Advanced Network Engineering (24) STP Advanced Knowledge
Guys, may I ask, the oraclecdc error report is not serialized, but I see that the source code does not inherit serialization, what is the reason?
Uni-app develops WeChat applet using local images as background images









