docker/mysql/README.md

83 lines
2.4 KiB
Markdown
Raw Normal View History

# 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`参数配置即可。
2019-03-18 15:58:09 +08:00
### 镜像下载
2019-03-18 15:58:09 +08:00
```
docker pull registry.cn-hangzhou.aliyuncs.com/kennylee/mysql
```
## 构建命令
* build
```
docker build -t kennylee26/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_FILE``MASTER_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` 文件