docker 搭建mysql 主从服务器
1、第一步
在服务器上建立目录
mkdir -p /mysqldemo/master/config/
mkdir -p /mysqldemo/master/data/
vim /mysqldemo/master/config/my.cnf

mkdir -p /mysqldemo/slave/config
mkdir -p /mysqldemo/slave/data/
vim /mysqldemo/slave/config/my.cnf



主服务器配置文件

[client]
#password    = your_password
port        = 3306
socket        = /tmp/mysql.sock

[mysqld]
port        = 3306
socket        = /tmp/mysql.sock
datadir = /var/lib/mysql/data
default_storage_engine = InnoDB
performance_schema_max_table_instances = 400
table_definition_cache = 400
skip-external-locking
key_buffer_size = 32M
max_allowed_packet = 100G
table_open_cache = 128
sort_buffer_size = 768K
net_buffer_length = 4K
read_buffer_size = 768K
read_rnd_buffer_size = 256K
myisam_sort_buffer_size = 8M
thread_cache_size = 16
query_cache_size = 16M
tmp_table_size = 32M
sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

explicit_defaults_for_timestamp = true
#skip-name-resolve
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535
server-id = 1
log-bin=mysql-bin
binlog-do-db=sleep
binlog_format=mixed
expire_logs_days = 10
slow_query_log=1
slow-query-log-file=/var/run/mysqld/mysql-slow.log
long_query_time=3
#log_queries_not_using_indexes=on
early-plugin-load = ""


innodb_data_home_dir = /var/lib/mysql/data
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /var/lib/mysql/data
innodb_buffer_pool_size = 128M
innodb_log_file_size = 64M
innodb_log_buffer_size = 16M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
innodb_max_dirty_pages_pct = 90
innodb_read_io_threads = 2
innodb_write_io_threads = 2

[mysqldump]
quick
max_allowed_packet = 500M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 32M
sort_buffer_size = 768K
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

从库服务器配置文件

[client]
#password    = your_password
port        = 3306
socket        = /tmp/mysql.sock

[mysqld]
port        = 3306
socket        = /tmp/mysql.sock
datadir = /var/lib/mysql/data
default_storage_engine = InnoDB
performance_schema_max_table_instances = 400
table_definition_cache = 400
skip-external-locking
key_buffer_size = 32M
max_allowed_packet = 100G
table_open_cache = 128
sort_buffer_size = 768K
net_buffer_length = 4K
read_buffer_size = 768K
read_rnd_buffer_size = 256K
myisam_sort_buffer_size = 8M
thread_cache_size = 16
query_cache_size = 16M
tmp_table_size = 32M
sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

explicit_defaults_for_timestamp = true
#skip-name-resolve
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535
server-id = 2
#log-bin=mysql-bin
relay-log-index=edu-mysql-relay-bin.index
relay-log=edu-mysql-relay-bin
binlog_format=mixed
expire_logs_days = 10
slow_query_log=1
slow-query-log-file=/var/run/mysqld/mysql-slow.log
long_query_time=3
#log_queries_not_using_indexes=on
early-plugin-load = ""


innodb_data_home_dir = /var/lib/mysql/data
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /var/lib/mysql/data
innodb_buffer_pool_size = 128M
innodb_log_file_size = 64M
innodb_log_buffer_size = 16M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
innodb_max_dirty_pages_pct = 90
innodb_read_io_threads = 2
innodb_write_io_threads = 2

[mysqldump]
quick
max_allowed_packet = 500M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 32M
sort_buffer_size = 768K
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout


2、拉取镜像并启动
docker pull mysql:5.7
#搭建主服务器
docker run --name mysql_master -p 3308:3306 --privileged=true \
-v /mysqldemo/master/config/my.cnf:/etc/mysql/my.cnf \
-v /mysqldemo/master/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

#搭建从服务器
docker run --name mysql_slave  -p 3309:3306 --privileged=true \
-v /mysqldemo/slave/config/my.cnf:/etc/mysql/my.cnf \
-v /mysqldemo/slave/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

3、在主服务器上建立同步用户
GRANT ALL PRIVILEGES ON *.* TO 'slave'@'%' IDENTIFIED BY '123456'

在主服务器上 创建数据库
create database sleep;

4、在从服务器上面

mysql -u root -p;
 #设置同步主节点:
 CHANGE MASTER TO MASTER_HOST='172.17.0.3', MASTER_PORT=3306, MASTER_USER='slave', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=154;
#开启
start slave;
停止从服务命令:stop slave;

重置主节点命令:reset master;

查看从服务器状态:
show slave status\G;