docker/mysql
2021-03-03 13:57:50 +08:00
..
conf 更新alpine镜像 2021-03-03 13:57:50 +08:00
replication 抽下风,修改下名字 2020-09-13 15:49:05 +08:00
buster.sources.list 更新mysql5.7 2021-01-27 14:33:04 +08:00
docker-compose-replication.yml 1、优化mysql的初始化配置。2、优化mysql的README 2019-04-17 16:19:22 +08:00
docker-compose.yml 更新目前使用的部分镜像 2021-01-21 15:17:54 +08:00
Dockerfile 更新mysql5.7 2021-01-27 14:33:04 +08:00
my.cnf 优化mysql的镜像,默认配置和自定义配置分离,并且修改说明文档 2019-04-18 11:00:01 +08:00
README.md 抽下风,修改下名字 2020-09-13 15:49:05 +08:00

MySQL

说明

官方 https://hub.docker.com/_/mysql/

修改:

  1. 修改官网的my.cnf文件配置编码为utf-8
  2. 增加/etc/mysql/mysql-my.conf.d/的配置目录方便启动容器的时候映射额外mysql的配置目录。
  3. 去掉默认的 VOLUME /var/lib/mysql 方便备份。

自定义配置

  1. 在宿主机上映射镜像内部的/etc/mysql/mysql-my.conf.d/目录然后创建cnf文件再把自定义的配置填写在里面。
  2. 启动容器的时候通过cmd的方法传入配置。例如最大连接数可参考下docker-compose.yml启动容器的时候传入--max_connections=300参数配置即可。

镜像下载

docker pull registry.cn-hangzhou.aliyuncs.com/kennylee/mysql

构建命令

  • build
docker build -t kennylee/mysql ./

MySQL主从同步单向同步实例

单向同步实现比较简单,双向就完全不同了,因为会涉及到事务和数据冲突等问题。一些读写分离和轻量级的高可用环境下课考虑使用。

docker-compose -f : up --build -d

注意由于 slave 的数据库中的 replication/slave-backup/schema.sql 需要根据 master 的情况来修改,所以未必每次可用,可根据实际情况来修改。具体操作是登录 master 容器中的mysql控制台内敲入 SHOW MASTER STATUS; 来查看。

提醒下,正式使用时,注意数据分离,docker-compose-replication.yml 例子中为了增加logbin准确度所以没映射log目录出来。

配置说明

master

# 服务器IP
bind-address	= 172.16.10.1
# 集群的server id 
server-id               = 1
# 同步依赖 log-bin 所以必须配置
log-bin = /var/log/mysql/mysql-bin.log
# 配置同步的数据库,多个写多行,不写全部都备份
binlog_do_db            = newdatabase
# 自动清理21天的日志
expire_logs_days = 21

配置好之后,还需要建立同步的账号,命令参考如下:

GRANT REPLICATION SLAVE ON *.* TO 'rep'@'%' IDENTIFIED BY '111111';

slave

server-id = 2
relay-log = /var/log/mysql/mysql-relay-bin.log

mysql控制台配置master同步的配置信息注意 MASTER_LOG_FILEMASTER_LOG_POS

CHANGE MASTER TO MASTER_HOST='172.16.10.1',MASTER_USER='rep', MASTER_PASSWORD='111111', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=  154;

详细见 replication/slave-backup/schema.sql 文件