代码拉取完成,页面将自动刷新
实验环境:
仅有一台机器:pjj-18
IP:192.168.115.80
主Mysql的配置:
1、创建/mysql文件夹
mkdir /mysql
2、进入/mysql文件夹
cd /mysql
3、创建dockerfile
# vim dockerfile
From mysql:5.7.26
LABEL author="tigerfive"
LABEL co-author="zonkidd"
ENV MYSQL_ALLOW_EMPTY_PASSWORD yes
COPY conf.sh /mysql/conf.sh
COPY privileges.sql /mysql/privileges.sql
CMD ["sh", "/mysql/conf.sh"]
4、创建conf.sh
# vim conf.sh
#!/bin/bash
set -e
echo '1. set server_id....'
sed -i '/\[mysqld\]/a server-id=1\nlog-bin=/var/log/mysql/mysql-bin\ngtid-mode=ON\nenforce-gtid-consistency=ON' /etc/mysql/mysql.conf.d/mysqld.cnf
echo '2. start mysql...'
service mysql start
echo '3. setting password...'
sed -i 's/MYSQLROOTPASSWORD/'$MYSQL_ROOT_PASSWORD'/' /mysql/privileges.sql
sed -i 's/MYSQLREPLICATIONUSER/'$MYSQL_REPLICATION_USER'/' /mysql/privileges.sql
sed -i 's/MYSQLREPLICATIONPASSWORD/'$MYSQL_REPLICATION_PASSWORD'/' /mysql/privileges.sql
mysql < /mysql/privileges.sql
echo '4. service mysql status'
echo 'mysql for tigerfive if ready...'
tail -f /dev/null
5、创建privileges.sql
# vim privileges.sql
use mysql;
set password for root@'localhost' = password("1234567");
grant all on *.* to "repl"@'%' identified by "1234567" with grant option;
flush privileges;
6、构建mysql5.7.26镜像
# docker build -t zonkidd/mysql5.7.26-master:v1
7、测试容器配置是否成功
# docker run -p 3306:3306 --name zonkiddsql -e MYSQL_ROOT_PASSWORD="1234567" -e MYSQL_REPLICATION_USER="repl" -e MYSQL_REPLICATION_PASSWORD="1234567" -d zonkidd/mysql5.7.26-master:v1
8、容器登录测试
# docker exec -it zonkiddsql bash
root@756ef34048f5:/# mysql -uroot -p1234567
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.26-log MySQL Community Server (GPL)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
从Mysql的配置:
1、创建/mysql2文件夹
mkdir /mysql2
2、进入/mysql2文件夹
cd /mysql2
3、创建dockerfile
# vim dockerfile
From mysql:5.7.26
LABEL author="tigerfive"
LABEL co-author="zonkidd"
ENV MYSQL_ALLOW_EMPTY_PASSWORD yes
COPY conf.sh /mysql2/conf.sh
COPY privileges.sql /mysql2/privileges.sql
CMD ["sh", "/mysql2/conf.sh"]
4、创建conf.sh
# vim conf.sh
#!/bin/bash
set -e
echo '1. set server_id...'
RAND="$(date +%s | rev | cut -c 1-2)$(echo ${RANDOM})"
sed -i '/\[mysqld\]/a server-id='$RAND'\nlog-bin=/var/log/mysql/mysql-bin\ngtid-mode=ON\nenforce-gtid-consistency=ON' /etc/mysql/mysql.conf.d/mysqld.cnf
echo '2. start mysql...'
service mysql start
echo '3. setting password...'
sed -i 's/MYSQLROOTPASSWORD/'$MYSQL_ROOT_PASSWORD'/' /mysql2/privileges.sql
sed -i 's/MYSQLMASTERSERVICEHOST/'$MYSQL_MASTER_SERVICE_HOST'/' /mysql2/privileges.sql
sed -i 's/MYSQLREPLICATIONUSER/'$MYSQL_REPLICATION_USER'/' /mysql2/privileges.sql
sed -i 's/MYSQLREPLICATIONPASSWORD/'$MYSQL_REPLICATION_PASSWORD'/' /mysql2/privileges.sql
mysql < /mysql2/privileges.sql
echo '4. service mysql status'
echo 'mysql for tigerfive if ready...'
tail -f /dev/null
5、创建privileges.sql
# vim privileges.sql
use mysql;
set password for root@'localhost' = password('1234567');
flush privileges;
CHANGE MASTER TO master_host='192.168.115.80', master_user='repl', master_password='1234567' ;
START SLAVE;
6、构建mysql5.7.26镜像
# docker build -t zonkidd/mysql5.7.26-slave:v1
7、容器创建,测试容器配置是否成功
# docker run -p 3307:3306 --name zonkiddsql2 -e MYSQL_ROOT_PASSWORD="1234567" -e MYSQL_MASTER_SERVICE_HOST="172.17.0.4" -e MYSQL_REPLICATION_USER='repl' -e MYSQL_REPLICATION_PASSWORD="1234567" -d zonkidd/mysql5.7.26-slave:v1
# docker exec -it zonkiddsql2 bash
root@c2feb4582891:/# mysql -uroot -p1234567
若想创建一主多从架构,则更改映射的端口和把容器名称更改
8、检测主从同步链接情况
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.115.80
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 852
Relay_Log_File: c2feb4582891-relay-bin.000004
Relay_Log_Pos: 1065
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
9、测试主从同步
主Mysql:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql> create database test;
Query OK, 1 row affected (0.01 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
5 rows in set (0.00 sec)
Slave1:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
5 rows in set (0.00 sec)
Slave2:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
5 rows in set (0.00 sec)
成功!
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。