安裝Docker:
1、Docker要求CentOS系統的內核版本高於 3.10 ,通過 uname -r 命令查看你當前的內核版本是否支持安賬docker
2、更新yum包:sudo yum update
3、安裝需要的軟件包,yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
4、設置yum源:sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
5、可以查看所有倉庫中所有docker版本,並選擇特定版本安裝:yum list docker-ce --showduplicates | sort -r
6、安裝docker:sudo yum install docker-ce-17.12.0.ce
7、啓動、設置開啓開機啓動
sudo systemctl start docker
sudo systemctl enable docker
8、驗證安裝是否成功(有client和service兩部分表示docker安裝啓動都成功了):docker version
9、查看docker啓動狀態:systemctl status docker(如下圖即啓動成功)
安裝mysql:
1.docker search mysql
2.docker pull mysql:5.7
3. 查看已經下載的鏡像
docker images
4.啓動容器
docker run --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=12345678 -d mysql:5.7
5.查看容器
docker ps
6.進入到Master容器內部(配置主庫)
docker exec -it mysql5.7 /bin/bash
7.安裝vim
apt-get update
apt-get install vim
8.
對my.cnf進行編輯
cd /etc/mysql
vi my.cnf
加入以下內容
[mysqld]
## 同一局域網內注意要唯一
server-id=100
## 開啓二進制日誌功能,可以隨便取(關鍵)
log-bin=mysql-bin
9.服務重啓
service mysql restart
docker start mysql5.7
或者
docker restart mysql5.7
10.進入容器,配置權限
docker exec -it 容器id /bin/bash
mysql -uroot -p
CREATE USER 'slave'@'%' IDENTIFIED BY '12345678';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
exit;
11.啓從庫
docker run -p 3340:3306 --name myslave -e MYSQL_ROOT_PASSWORD=12345678 -d mysql:5.7
12.對從庫my.cnf進行編輯
docker exec -it myslave /bin/bash
apt-get update
apt-get install vim
cd /etc/mysql
vi my.cnf
加入以下內容
[mysqld]
## 設置server_id,注意要唯一
server-id=101
## 開啓二進制日誌功能,以備Slave作爲其它Slave的Master時使用
log-bin=mysql-slave-bin
## relay_log配置中繼日誌
relay_log=edu-mysql-relay-bin
13.重啓從庫
service mysql restart
docker start myslave
14.查詢master host ip(獲得16中的master_host)
docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql5.7
15.進入主庫,查詢庫名爲mysql的數據庫(獲得16中的master_log_file和master_log_pos)
show master status;
16.進入從庫,查詢庫名爲mysql的數據庫,執行sql設置主庫
change master to master_host='172.17.0.2', master_user='slave', master_password='12345678', master_port=3306, master_log_file='mysql-bin.000002', master_log_pos=154, master_connect_retry=30;
master_port:Master的端口號,指的是容器的端口號
master_user:用於數據同步的用戶
master_password:用於同步的用戶的密碼
master_log_file:指定 Slave 從哪個日誌文件開始複製數據,即15的 File 字段的值
master_log_pos:從哪個 Position 開始讀,即15的 Position 字段的值
master_connect_retry:如果連接失敗,重試的時間間隔,單位是秒,默認是60秒
17.在Slave 中的mysql終端執行,
show slave status;
18.
SlaveIORunning 和 SlaveSQLRunning 都是No,因爲我們還沒有開啓主從複製過程。開啓主從複製過程,並且查看
start slave;
show slave status;
SlaveIORunning 和 SlaveSQLRunning 都是Yes,說明主從複製已經開啓。
(
mysql8.0 在navicat連接時出現1251錯誤是mysql8 之前的版本中加密規則是mysql_native_password,而在mysql8之後,加密規則是caching_sha2_password, 解決問題方法
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '12345678'; #修改加密規則
ALTER USER 'root'@'%' IDENTIFIED BY '12345678' PASSWORD EXPIRE NEVER; #更新一下用戶的密碼
ALTER USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '12345678'; #修改加密規則
ALTER USER 'slave'@'%' IDENTIFIED BY '12345678' PASSWORD EXPIRE NEVER; #更新一下用戶的密碼
)