Docker安裝MySQL
docker pull mysql:5.7
docker images mysql
安裝步驟
1.新建主服務器容器實例3307
docker run -p 3307:3306 --name mysql-master -v /usr/local/docker/mysql5.7/data/mysql-master/logs:/var/log/mysql -v /usr/local/docker/mysql5.7/data/mysql-master/data:/var/lib/mysql -v /usr/local/docker/mysql5.7/data/mysql-master/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
2.進入 /usr/local/docker/mysql5.7/data/mysql-master/conf 目錄下新建 my.cnf 文件,文件內容如下
[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8
#設置server_id,同一局域網中需要唯一
server_id=101
#指定不需要同步的數據庫名稱
binlog-ignore-db=mysql
#開啟二進制日志功能
log-bin=mall-mysql-bin
#設置二進制日志使用內存大小(事務)
binlog_cache_size=1M
#設置使用的二進制日志格式(mixed,statement,row)
binlog_format=mixed
#二進制日志過期清理時間,默認值為0,表示不自動清理
expire_logs_days=7
#跳過主從復制中遇到的所有錯誤或指定類型的錯誤,避免slave端復制中斷
##如:1062錯誤是指一些主鍵重復;1032錯誤是因為主從數據庫不一致
slave_skip_errors=1062
3.改完配置后重啟mysql-master實例,重啟后查看容器狀態
docker restart mysql-master
docker ps
4.進入mysql-master容器,進入mysql服務
docker exec -it mysql-master bash
mysql -uroot -p123456
5.mysql-master容器實例內創建數據同步用戶
CREATE USER 'slave'@'%'IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.*TO'slave'@'%';
6.新建從服務器實例3308
docker run -p 3308:3306 --name mysql-slave -v /usr/local/docker/mysql5.7/data/mysql-slave/logs:/var/log/mysql -v /usr/local/docker/mysql5.7/data/mysql-slave/data:/var/lib/mysql -v /usr/local/docker/mysql5.7/data/mysql-slave/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
7.進入 /usr/local/docker/mysql5.7/data/mysql-slave/conf 目錄下新建 my.cnf 文件,文件內容如下
[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8
#設置server_id,同一局域網中需要唯一
server_id=102
#指定不需要同步的數據庫名稱
binlog-ignore-db=mysql
#開啟二進制日志功能
log-bin=mall-mysql-slave1-bin
#設置二進制日志使用內存大小(事務)
binlog_cache_size=1M
#設置使用的二進制日志格式(mixed,statement,row)
binlog_format=mixed
#二進制日志過期清理時間,默認值為0,表示不自動清理
expire_logs_days=7
#跳過主從復制中遇到的所有錯誤或指定類型的錯誤,避免slave端復制中斷
##如:1062錯誤是指一些主鍵重復;1032錯誤是因為主從數據庫不一致
slave_skip_errors=1062
#relay_log配置中繼日志
relay_log=mall-mysql-relay-bin
#log_slave_updates表示slave將復制事件寫入自己的二進制日志
log_slave_updates=1
#slave設置為只讀(具有super權限的用戶除外)
read_only=1
8.改完配置后重啟mysql-slave實例
docker restart mysql-slave
9.在主數據庫中查看主從同步狀態
show master status;
10.進入mysql-slave容器
docker exec -it mysql-slave bash
mysql -uroot -p123456
11.在從數據庫中配置主從復制
主從復制命令參數說明
master_host:主數據庫的ip地址 master_port:主數據庫的運行端口
master_user:在主數據庫創建的用于同步數據的用戶賬號 master_password:在主數據庫創建用于同步同步的用戶密碼
master_log_file:指定從數據庫要復制數據的日志文件,通過查看主數據的狀態,獲取File參數
master_log_pos:指定從數據庫從哪個位置開始復制數據,通過查看主數據的狀態,獲取Position參數
master_connect_retry:連接失敗重試的時間間隔,單位為秒
change master to master_host='宿主機ip', master_user='slave', master_password='123456', master_port=3307, master_log_file='mall-mysql-bin.000001', master_log_pos=617, master_connect_retry=30;
12.在從數據庫中查看主從同步狀態
show slave status \G;
13.在從數據庫中開啟主從同步
start slave;
14.查看從數據庫狀態
show slave status \G;
15.主從復制測試
主機新建庫、使用庫、新建表、寫入數據
從句使用庫、查詢記錄
CREATE DATABASE db1;USE db1;CREATE TABLE t1(id int, name varchar(20));INSERT INTO t1 VALUE (1, '李白');
INSERT INTO t1 VALUE (2, 'bai_qi');SELECT * FROM t1;