Centos7系統Docker安裝
目錄
目錄
1、下載mysql鏡像
docker search mysql
docker pull mysql:5.7
docker images
2、創建Master實例並啟動
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:5.7
參數說明
- -p 3307:3306:將容器的3306端口映射到主機的3307端口
- -v /mydata/mysql/master/conf:/etc/mysql:將配置文件夾掛在到主機
- -v /mydata/mysql/master/log:/var/log/mysql:將日志文件夾掛載到主機
- -v /mydata/mysql/master/data:/var/lib/mysql/:將配置文件夾掛載到主機
- -e MYSQL_ROOT_PASSWORD=root:初始化root用戶的密碼
修改master基本配置
vim /mydata/mysql/master/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
注意:skip-name-resolve一定要加,不然連接mysql會超級慢
3、創建Slave實例並啟動
docker run -p 3316:3306 --name mysql-slaver-01 \
-v /mydata/mysql/slaver/log:/var/log/mysql \
-v /mydata/mysql/slaver/data:/var/lib/mysql \
-v /mydata/mysql/slaver/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
修改slave基本配置
vim /mydata/mysql/slaver/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
4、添加master主從復制部分配置
vim /mydata/mysql/master/conf/my.cnf
server_id=1
log-bin=mysql-bin
read-only=0
binlog-do-db=gmall_ums
binlog-do-db=gmall_pms
binlog-do-db=gmall_oms
binlog-do-db=gmall_sms
binlog-do-db=gmall_cms
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
重啟容器
5、添加Slave主從復制部分配置
server_id=2
log-bin=mysql-bin
read-only=1
binlog-do-db=gmall_ums
binlog-do-db=gmall_pms
binlog-do-db=gmall_oms
binlog-do-db=gmall_sms
binlog-do-db=gmall_cms
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
重啟容器
6、為master授權用戶來他的同步數據
1、進入主庫
docker exec -it 4fdd7f265228 /bin/bash
2、進入主庫mysql數據庫
mysql -u root -p
- 1)、授權root可以遠程訪問( 主從無關,為了方便我們遠程連接mysql)
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;
- 2)、添加用來同步的用戶
GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by '123456';
- 3)、查看數據庫的狀態
show master status\G;
3、進入從庫mysql數據庫
- 1)、授權root可以遠程訪問( 主從無關,為了方便我們遠程連接mysql)
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;
- 2)、設置主庫連接
change master to master_host='192.168.116.129',master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0,master_port=3307;
- 3)、啟動從庫同步
start slave;
- 4)、查看從庫狀態
show slave status\G;
至此主從配置完成;
總結:
1)、主從數據庫在自己配置文件中聲明需要同步哪個數據庫,忽略哪個數據庫等信息。並且server-id不能一樣
2)、主庫授權某個賬號密碼來同步自己的數據
3)、從庫使用這個賬號密碼連接主庫來同步數據
演示效果