1、下載鏡像
docker search mysql 找到使用的版本
docker pull +鏡像版本
運(yùn)行鏡像 并掛載
docker run -p 3307:3306 --name mysql-master \ -v /mydata/mysql-master/log:/var/log/mysql \ -v /mydata/mysql-master/data:/var/lib/mysql \ -v /mydata/mysql-master/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORD=root \ -d mysql:8.0
編輯my.cnf文件
[client]
default_character_set=UTF8MB4 #設(shè)置編碼格式`
[mysqld]`
server_id=101 #指定serverid
binlog-ignore-db=mysql#指定忽視數(shù)據(jù)庫(kù)
log-bin=mysql-bin#指定mysql日志文件名
binlog_cache_size=1M
binlog_format=mixed
expire_logs_days=7 #指定過(guò)期時(shí)間
slave_skip_errors=1062 #指定跳過(guò)特定一場(chǎng),主鍵重復(fù)
lower_case_table_names=2
gtid_mode=ON #開(kāi)啟global transction模式不再使用指定postion同步
enforce_gtid_consistency=ON
collation_server=utf8mb4_0900_ai_ci
character_set_server=UTF8MB4
修改完配置后重啟master實(shí)例
docker restart mysql-master
進(jìn)入mysql-master容器 并進(jìn)入數(shù)據(jù)庫(kù)
docker exit -it mysql-master /bin/bash
mysql -uroot -proot
創(chuàng)建數(shù)據(jù)同步用戶(hù)
create user 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';.
運(yùn)行從庫(kù)mysql
修改從庫(kù)cnf
[client]
default_character_set=UTF8MB4 #設(shè)置編碼格式
[mysqld]
server_id=102 #指定serverid
binlog-ignore-db=mysql#指定忽視數(shù)據(jù)庫(kù)
log-bin=mysql-slave-bin#指定mysql日志文件名
binlog_cache_size=1M
binlog_format=mixed
expire_logs_days=7 #指定過(guò)期時(shí)間
slave_skip_errors=1062 #指定跳過(guò)特定異常,主鍵重復(fù)
lower_case_table_names=2
gtid_mode=ON #開(kāi)啟global transction模式不再使用指定postion同步
ENFORCE_GTID_CONSISTENCY = ON
## relay_log配置中繼日志
relay_log=mall-mysql-relay-bin
## log_slave_updates表示slave將復(fù)制事件寫(xiě)進(jìn)自己的二進(jìn)制日志
log_slave_updates=1
## slave設(shè)置為只讀(具有super權(quán)限的用戶(hù)除外)
read_only=1
collation_server=utf8mb4_0900_ai_ci
character_set_server=UTF8MB4
兩種方式,配置從庫(kù)連接到主庫(kù)
1、根據(jù)postion從指定位置開(kāi)始同步
主要使用第二種,8.0之后的語(yǔ)法
2、gtid的方式,自動(dòng)同步,該方式在從庫(kù)掛了之后重啟,會(huì)自動(dòng)從上次的位置自動(dòng)同步。
CHANGE REPLICATION SOURCE TO SOURCE_HOST = '192.168.1.51', SOURCE_PORT = 3306, SOURCE_USER = 'slave', SOURCE_PASSWORD = '123456', SOURCE_AUTO_POSITION = 1;
START REPLICA; // slave start;
//START REPLICA IO_THREAD; //單獨(dú)開(kāi)啟io線(xiàn)程跟sql線(xiàn)程
//START REPLICA SQL_THREAD;