一首繁、docker快捷安裝mysql5.7
1.docker啟動之后坏为,拉取mysql的鏡像
docker pull mysql:5.7.21
2.初次運(yùn)行鏡像
docker run --name mysql.5.7.21 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.21
--name 為設(shè)置容器的名字,我設(shè)置為mysql.5.7.21
-p 端口映射
-e 為設(shè)置執(zhí)行時的環(huán)境變量爷怀,在這里我設(shè)置mysql的root密碼阻肩,相關(guān)變量可參考官網(wǎng)
-d 為設(shè)置鏡像,鏡像名:版本
3.進(jìn)入mysql的容器里
docker exec -it mysql_master
4.查看docker的啟動情況
docker ps -a
5.用mysql工具就可以之間連接進(jìn)去進(jìn)行操作了
二运授、使用docker給mysql添加主從
1.拉取鏡像
docker pull mysql:5.7.21
2.運(yùn)行2個mysql鏡像烤惊,分別命名mysql_master、mysql_slave
docker run --name mysql_master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.21
docker run --name mysql_slave -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.21
3.進(jìn)入mysql_master進(jìn)行相關(guān)主節(jié)點(diǎn)配置
docker exec -it mysql_master /bin/bash
查找mysql配置文件的位置
find / -name my.cnf 或 mysql --help | grep my.cnf
在/etc/mysql/my.cnf
vim /etc/mysql/ny.cnf
添加內(nèi)容
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
[mysqld]
# Master node configuration 2 and slave node configuration 3吁朦, generally configured according to the Intranet IP
server-id = 2
port = 3306
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
default-storage-engine = InnoDB
log-bin = mysql-bin
log-bin-index = mysql-bin.index
relay-log = mysql-relay
relay-log-index = mysql-relay.index
expire-logs-days = 10
max-binlog-size = 100M
max_binlog_cache_size = 8M
log-slave-updates = 1
binlog_cache_size = 4M
# use MIXED binlog
binlog_format = MIXED
#binlog_format = ROW
#replicate-do-db = db%.%
#replicate-ignore-db = mysql.%
# ignore tables
replicate-wild-ignore-table = mysql.%
sync_binlog = 1
relay_log_recovery = 1
log_slave_updates = 1
skip-name-resolve
sql_mode=STRICT_TRANS_TABLES
[mysqldump]
quick
max_allowed_packet = 32M
修改完重啟mysql_master容器或重啟mysql
重啟mysql:
service mysql restart
或重啟容器:
docker start mysql_master
重啟容器后進(jìn)入mysql_master容器
docker exec -it mysql_master /bin/bash
登錄mysql客戶端柒室,創(chuàng)建用戶,授權(quán)逗宜,開啟binlog
mysql -uroot -p123456
mysql> create user 'repl'@'%' identified by 'abcd_123';
mysql> grant replication slave on . to 'repl'@'%' identified by 'abcd_123';
mysql> flush privileges;
重啟
service mysql restart
4.進(jìn)入mysql_slave容器雄右,連接mysql客戶端
**在mysql_slave里配置和mysql_master一樣的my.conf配置server-id改成3
改成和master status里顯示的內(nèi)容一致 Master_log_file 和 Master_log_pos
mysql> show master status;
mysql> stop slave;
mysql> Change master to Master_host='172.17.0.2', Master_user='repl', Master_password='abcd_123', Master_log_file='mysql-bin.000001', Master_log_pos=120;
mysql> start slave纺讲;
mysql> show slave status \G
當(dāng)
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
表示操作成功
5.Slave_IO_Running:NO(解決方法)
改成和master status里顯示的內(nèi)容一致
mysql> show master status;
mysql> stop slave;
mysql> change master to Master_Log_File='mysql-bin.000002',Master_Log_Pos=154;
mysql> start slave;
mysql> show slave status \G;
注:
- 容器內(nèi)容ip
172.17.0.2 是容器中mysql_master里的內(nèi)網(wǎng)ip
172.17.0.3 是容器中mysql_slave里的內(nèi)網(wǎng)ip - 鏡像過度精簡導(dǎo)致沒有vim擂仍、ifconfig、ping命令處理方案:docker 鏡像下安裝Vim
安裝vim
apt-get install -y vim
安裝ifconfig
apt-get install net-tools
安裝ping命令
apt-get install iputils-ping - Docker容器互訪三種方式