docker搭建mysql的集群(一主双从)
1.拉取镜像
docker pull mysql:5.6
2.启动master容器
docker run -it -d --name mysql_master -p 3306:3306 --ip 192.168.162.100 \
-v /data/mysql_master/mysql:/var/lib/mysql \
-v /data/mysql_master/conf.d:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root -e TZ=Asia/Shanghai --privileged=true mysql:5.6 --lower_case_table_names=1
参数说明:
-p 3306:3306:将容器的3306端口映射到主机的3306端口
-v /data/mysql_master/mysql:/var/lib/mysql:将数据文件夹挂载到主机
-v /data/mysql_master/conf.d:/etc/mysql/conf.d:将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码
3.配置master数据库
编辑mysql配置文件
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
max_connections=1000
# 数据库字符集
character_set_server = utf8
# mysql编号(只可以是数字) 每个节点不一样
server_id = 1
# 开始binlog日志,规定日志文件名称
log_bin = mysql_bin
# 开启relaylog日志,规定日志文件名称
relay_log = relay_bin
# 从库的写操作是否写入binlog日志
log-slave-updates = 1
# 采用严格的SQL语句模式
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
4.重新启动master容器
docker restart 容器id
5.master数据库中新建同步数据用户
navcat 连接master数据库,新建用户
6.启动salve1容器
docker run -it -d --name mysql_salve1 -p 3307:3306 --ip 192.168.162.100 \
-v /data/mysql_salve1/mysql:/var/lib/mysql \
-v /data/mysql_salve1/conf.d:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root -e TZ=Asia/Shanghai --privileged=true mysql:5.6 --lower_case_table_names=1
7.配置salve1数据库
编辑数据库配置文件
编辑数据库配置文件:
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
max_connections=1000
# 数据库字符集
character_set_server = utf8
# mysql编号(只可以是数字) 每个节点不一样
server_id = 3
# 开始binlog日志,规定日志文件名称
log_bin = mysql_bin
# 开启relaylog日志,规定日志文件名称
relay_log = relay_bin
# 限制普通账户无法insert、delete、update语句,但是该配置对于管理员账号无效
read-only = 1
# 采用严格的SQL语句模式
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
8.重新启动salve1数据库
docker restart 容器ID
9.配置salve1数据库
工具连接上salve1数据库,命令行中执行
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)
mysql> change master to master_host="172.17.0.2",master_port=3306,master_user='sync',master_password='sync';
Query OK, 0 rows affected (0.02 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql> show slave status;
master_host :Master的地址,指的是容器的独立ip,可以通过以下命令查看
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id
10.搭建salve2数据库
搭建方式同salve1