欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Docker的Mysql主備搭建的實現(xiàn)步驟

 更新時間:2022年01月28日 10:58:23   作者:tuacy  
本文主要介紹了基于Docker的Mysql主備搭建的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

Docker mysql主從配置。我們會在一臺centos的虛擬機上,配置mysql主備

前期規(guī)劃:

  • docker mysql版本 mysql:5.7
  • docker網(wǎng)絡(luò)配置,我們會創(chuàng)建名稱為mysql的網(wǎng)絡(luò),子網(wǎng)掩碼為 172.88.0.0/16
  • docker mysql主對應(yīng)的容器名稱:mysql-master, ip地址:172.88.0.11,映射端口:3307,文件卷配置(配置文件和數(shù)據(jù)文件持久化)mysql配置文件地址:/usr/local/docker/mysql/slave/conf,mysql數(shù)據(jù)文件地址:/usr/local/docker/mysql/slave/data
  • docker mysql從對應(yīng)的容器名稱:mysql-slave, ip地址: 172.88.0.12,映射端口:3308,文件卷配置(配置文件和數(shù)據(jù)文件持久化)mysql配置文件地址:/usr/local/docker/mysql/master/conf,mysql數(shù)據(jù)文件地址:/usr/local/docker/mysql/master/data

配置過程:

網(wǎng)絡(luò)創(chuàng)建(兩個mysql之間是需要通信的)

# 創(chuàng)建網(wǎng)絡(luò)mysql,子網(wǎng)掩碼172.88.0.0/16
[root@localhost conf]# docker network create mysql --subnet 172.88.0.0/16
# 查看網(wǎng)絡(luò)是否創(chuàng)建成功:有mysql則表示創(chuàng)建成功
[root@localhost conf]# docker network ls
NETWORK ID ? ? NAME ? ? ?DRIVER ? ?SCOPE
b03fab4e1371 ? bridge ? ?bridge ? ?local
0abda6b25a0e ? host ? ? ?host ? ? ?local
844e3f85e00e ? mysql ? ? bridge ? ?local
c2bbcb4013a7 ? none ? ? ?null ? ? ?local

拉取docker mysql鏡像,這里我們使用的是mysql:5.7版本

# 拉取docker鏡像,mysql:5.7版本
[root@localhost ~]# docker pull mysql:5.7

啟動兩個mysql容器,mysql-master,mysql-slave

# 記得修改下conf的配置文件
# chmod -R 777 /usr/local/docker/mysql/master/conf
# chmod -R 777 /usr/local/docker/mysql/slave/conf
# 啟動容器,一個對應(yīng)主,一個對應(yīng)從
# mysql master [mysql-master, 3307,172.88.0.11,/usr/local/docker/mysql/master/data,/usr/local/docker/mysql/master/conf]
[root@localhost /]# docker run --name mysql-master -p 3307:3306 -v /usr/local/docker/mysql/master/data:/var/lib/mysql -v /usr/local/docker/mysql/master/conf:/etc/mysql/ -e MYSQL_ROOT_PASSWORD=123456 -d --net mysql --ip 172.88.0.11 mysql:5.7
# mysql slave [mysql-slave, 3308,172.88.0.12,/usr/local/docker/mysql/slave/data,/usr/local/docker/mysql/slave/conf]
[root@localhost /]# docker run --name mysql-slave -p 3308:3306 -v /usr/local/docker/mysql/slave/data:/var/lib/mysql -v /usr/local/docker/mysql/slave/conf:/etc/mysql/ -e MYSQL_ROOT_PASSWORD=123456 -d --net mysql --ip 172.88.0.12 mysql:5.7

# 查看mysql-master,mysql-slave兩個容器是否正確啟動
[root@localhost /]# docker ps
CONTAINER ID ? IMAGE ? ? ? COMMAND ? ? ? ? ? ? ? ? ?CREATED ? ? ? ? ?STATUS ? ? ? ? ?PORTS ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?NAMES
205cd234c29b ? mysql:5.7 ? "docker-entrypoint.s…" ? 9 seconds ago ? ?Up 7 seconds ? ?33060/tcp, 0.0.0.0:3308->3306/tcp, :::3308->3306/tcp ? mysql-slave
cdcc14b2b2a2 ? mysql:5.7 ? "docker-entrypoint.s…" ? 49 seconds ago ? Up 46 seconds ? 33060/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp ? mysql-master

mysql主備配置

# 修改配置文件
# mysql-master配置文件修改,因為我們做了docker文件卷處理,所以我們直接在宿主機/usr/local/docker/mysql/master/conf下操作即可
[root@localhost ~]# cd /usr/local/docker/mysql/master/conf/
[root@localhost conf]# vi my.cnf?
# 在my.cnf里面輸入如下信息
[mysqld]
## 同一局域網(wǎng)內(nèi)注意要唯一
server-id=100
## 開啟二進制日志功能,可以隨便?。P(guān)鍵)
log-bin=mysql-bin

# 進入mysql-master容器里面重啟mysql服務(wù)
# docker exec -it mysql-master /bin/bash 進入mysql-master容器
# service mysql restart重啟mysql服務(wù)器
# 這里有一點要注意,重啟mysql服務(wù)之后,mysql-master容器被關(guān)掉了,所以我們需要docker start mysql-master在啟動下容器
[root@localhost /]# docker exec -it mysql-master /bin/bash
root@cdcc14b2b2a2:/# service mysql restart
[root@localhost /]# docker start mysql-master

# 再次進入mysql-master容器授予slave用戶 REPLICATION SLAVE權(quán)限和REPLICATION CLIENT權(quán)限,用于在主從庫之間同步數(shù)據(jù)[slave用戶是用來做數(shù)據(jù)同步的]
# 1. CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
# 2. GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
# 3. show master status; ?查看主庫狀態(tài),請記住File和Position對應(yīng)的值
[root@localhost /]# docker exec -it mysql-master /bin/bash
root@205cd234c29b:/# mysql -u root -p ? ??
Enter password:?
Welcome to the MySQL monitor. ?Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36-log MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

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> CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.04 sec)

mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File ? ? ? ? ? ? | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 | ? ? ?617 | ? ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ? |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.01 sec)

mysql>?

# mysql-slave配置文件修改,因為我們做了docker文件卷處理,所以我們直接在宿主機/usr/local/docker/mysql/slave/conf下操作即可
[root@localhost conf]# cd /usr/local/docker/mysql/slave/conf/
[root@localhost conf]# vi my.cnf?
# 在my.cnf里面輸入如下信息
[mysqld]
## 設(shè)置server_id,注意要唯一
server-id=101
## 開啟二進制日志功能,以備Slave作為其它Slave的Master時使用
log-bin=mysql-slave-bin
## relay_log配置中繼日志
relay_log=edu-mysql-relay-bin

# 進入mysql-slave容器里面重啟mysql服務(wù)
# docker exec -it mysql-slave /bin/bash 進入mysql-master容器
# service mysql restart重啟mysql服務(wù)器
# 這里又一點要注意,重啟mysql服務(wù)之后,mysql-slave容器被關(guān)掉了,所以我們需要docker start mysql-slave在啟動下容器
[root@localhost /]# docker exec -it mysql-slave /bin/bash
root@205cd234c29b:/# service mysql restart
[root@localhost /]# docker start mysql-slave
# 再次進入mysql-slave容器,連上mysql-slave數(shù)據(jù)庫
[root@localhost /]# docker exec -it mysql-slave /bin/bash
[root@localhost conf]# docker exec -it mysql-slave /bin/bash
root@205cd234c29b:/# mysql -u root -p
Enter password:?
Welcome to the MySQL monitor. ?Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.36-log MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

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> change master to master_host='172.88.0.11', master_port=3306, master_user='slave',master_password='123456',master_log_file='mysql-bin.000002', master_log_pos=617;
Query OK, 0 rows affected, 2 warnings (0.06 sec)

mysql> start slave;
Query OK, 0 rows affected (0.02 sec)

mysql> show slave status\G;
*************************** 1. row ***************************
? ? ? ? ? ? ? ?Slave_IO_State: Waiting for master to send event
? ? ? ? ? ? ? ? ? Master_Host: 172.88.0.11
? ? ? ? ? ? ? ? ? Master_User: slave
? ? ? ? ? ? ? ? ? Master_Port: 3306
? ? ? ? ? ? ? ? Connect_Retry: 60
? ? ? ? ? ? ? Master_Log_File: mysql-bin.000002
? ? ? ? ? Read_Master_Log_Pos: 617
? ? ? ? ? ? ? ?Relay_Log_File: edu-mysql-relay-bin.000002
? ? ? ? ? ? ? ? Relay_Log_Pos: 320
? ? ? ? Relay_Master_Log_File: mysql-bin.000002
? ? ? ? ? ? ?Slave_IO_Running: Yes
? ? ? ? ? ? Slave_SQL_Running: Yes
? ? ? ? ? ? ? Replicate_Do_DB:?
? ? ? ? ? Replicate_Ignore_DB:?
? ? ? ? ? ?Replicate_Do_Table:?
? ? ? ?Replicate_Ignore_Table:?
? ? ? Replicate_Wild_Do_Table:?
? Replicate_Wild_Ignore_Table:?
? ? ? ? ? ? ? ? ? ?Last_Errno: 0
? ? ? ? ? ? ? ? ? ?Last_Error:?
? ? ? ? ? ? ? ? ?Skip_Counter: 0
? ? ? ? ? Exec_Master_Log_Pos: 617
? ? ? ? ? ? ? Relay_Log_Space: 531
? ? ? ? ? ? ? Until_Condition: None
? ? ? ? ? ? ? ?Until_Log_File:?
? ? ? ? ? ? ? ? Until_Log_Pos: 0
? ? ? ? ? ?Master_SSL_Allowed: No
? ? ? ? ? ?Master_SSL_CA_File:?
? ? ? ? ? ?Master_SSL_CA_Path:?
? ? ? ? ? ? ? Master_SSL_Cert:?
? ? ? ? ? ? Master_SSL_Cipher:?
? ? ? ? ? ? ? ?Master_SSL_Key:?
? ? ? ? Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
? ? ? ? ? ? ? ? Last_IO_Errno: 0
? ? ? ? ? ? ? ? Last_IO_Error:?
? ? ? ? ? ? ? ?Last_SQL_Errno: 0
? ? ? ? ? ? ? ?Last_SQL_Error:?
? Replicate_Ignore_Server_Ids:?
? ? ? ? ? ? ?Master_Server_Id: 100
? ? ? ? ? ? ? ? ? Master_UUID: 46cc703d-5b0e-11ec-a43c-0242ac110002
? ? ? ? ? ? ?Master_Info_File: /var/lib/mysql/master.info
? ? ? ? ? ? ? ? ? ? SQL_Delay: 0
? ? ? ? ? SQL_Remaining_Delay: NULL
? ? ? Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
? ? ? ? ? ?Master_Retry_Count: 86400
? ? ? ? ? ? ? ? ? Master_Bind:?
? ? ? Last_IO_Error_Timestamp:?
? ? ?Last_SQL_Error_Timestamp:?
? ? ? ? ? ? ? ?Master_SSL_Crl:?
? ? ? ? ? ?Master_SSL_Crlpath:?
? ? ? ? ? ?Retrieved_Gtid_Set:?
? ? ? ? ? ? Executed_Gtid_Set:?
? ? ? ? ? ? ? ? Auto_Position: 0
? ? ? ? ?Replicate_Rewrite_DB:?
? ? ? ? ? ? ? ? ?Channel_Name:?
? ? ? ? ? ?Master_TLS_Version:?

到此這篇關(guān)于基于Docker的Mysql主備搭建的實現(xiàn)步驟的文章就介紹到這了,更多相關(guān)Docker Mysql主備搭建內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論