最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL9.1.0實現(xiàn)最基礎主從復制的步驟

 更新時間:2025年02月24日 09:23:29   作者:妍妍的寶貝  
本文主要介紹了使用Docker實現(xiàn)MySQL的主從復制,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1 實驗介紹

本次實驗 使用 docker 鏡像,開啟三個容器,實現(xiàn)一主兩從。

容器主機IP地址映射主機端口
mysql-master192.168.1.23306
mysql-slave1192.168.1.33307
mysql-slave2192.168.1.43308

2 實驗準備

2.1 創(chuàng)建目錄為MySQL掛載使用

使用 docker 做MySQL這一種有狀態(tài)的,需要很好的保持數(shù)據(jù)的可靠性,所以得使用宿主機掛載到容器內

 [root@chucong mysql_zhucong]# tree /data/ -L 3
 /data/
 ├── master              # master的目錄
 │   ├── conf            # 配置文件存放目錄
 │   │   └── my.cnf      # 配置文件
 │   └── master-data     # 存放數(shù)據(jù)的地方
 ├── slave1
 │   ├── conf
 │   │   └── my.cnf
 │   └── slave1-data
 └── slave2
     ├── conf
     │   └── my.cnf
     └── slave2-data
 ?
 # MySQL 配置文件
 [root@chucong mysql_zhucong]# cat /data/master/conf/my.cnf 
 [mysqld]
 datadir=/var/lib/mysql
 socket=/var/lib/mysql/mysql.sock
 symbolic-links=0
 log_bin=mysql-bin  # 開啟bin-log日志,注意只有主配置文件需開啟
 server_id=10
 #gtid_mode=ON    # 開啟GTID
 #enforce-gtid-consistency=ON    # 保證GTID的強一致性 ?
 ?
 [root@chucong mysql_zhucong]# cat /data/slave1/conf/my.cnf 
 [mysqld]
 datadir=/var/lib/mysql
 socket=/var/lib/mysql/mysql.sock
 symbolic-links=0
 server_id=20
 #super_read_only=on  #只讀
 #gtid_mode=ON    # 開啟GTID
 #enforce-gtid-consistency=ON    # 保證GTID的強一致性
 ?
 [root@chucong mysql_zhucong]# cat /data/slave2/conf/my.cnf 
 [mysqld]
 datadir=/var/lib/mysql
 socket=/var/lib/mysql/mysql.sock
 symbolic-links=0
 server_id=30
 #super_read_only=on  #只讀
 #gtid_mode=ON    # 開啟GTID
 #enforce-gtid-consistency=ON    # 保證GTID的強一致性

2.2 編寫 docker-compose.yml 文件

[root@chucong mysql_zhucong]# docker pull mysql:9.1.0
[root@chucong mysql_zhucong]# vim docker-compose.yml 
 version: '2.27.1'
 services:
   mysql-master:
     image: mysql:9.1.0
     container_name: mysql-master
     environment:            # 定義系統(tǒng)值
       MYSQL_ROOT_PASSWORD: root     # root密碼
       MYSQL_USER: repl      # 創(chuàng)建復制用戶
       MYSQL_PASSWORD: root  # 設置密碼
     ports:
       - 3306:3306
     volumes:
       - /data/master/master-data:/var/lib/mysql # 掛載宿主機目錄到容器
       - /data/master/conf/my.cnf:/etc/my.cnf
     restart: always
     networks:
       mynet1:
         ipv4_address: 192.168.1.2
 ?
   mysql-slave1:
     image: mysql:9.1.0
     container_name: mysql-slave1
     environment:
       MYSQL_ROOT_PASSWORD: root
       MYSQL_USER: repl
       MYSQL_PASSWORD: root
     ports:
       - 3307:3306
     volumes:
       - /data/slave1/slave1-data:/var/lib/mysql # 掛載宿主機目錄到容器
       - /data/slave1/conf/my.cnf:/etc/my.cnf
     restart: always
     networks:
       mynet1:
         ipv4_address: 192.168.1.3
 ?
   mysql-slave2:
     image: mysql:9.1.0
     container_name: mysql-slave2
     environment:
       MYSQL_ROOT_PASSWORD: root
       MYSQL_USER: repl
       MYSQL_PASSWORD: root
     ports:
       - 3308:3306
     volumes:
       - /data/slave2/slave2-data:/var/lib/mysql # 掛載宿主機目錄到容器
       - /data/slave2/conf/my.cnf:/etc/my.cnf
     restart: always
     networks:
       mynet1:
         ipv4_address: 192.168.1.4
 ?
 networks:
   mynet1:                       # 使用自定義橋接模式
     driver: bridge
     ipam:
       config:
       - subnet: 192.168.1.0/24  # 定義網段
         gateway: 192.168.1.1    # 定義網關

2.3 啟動容器

 [root@chucong zhucong]# docker compose up -d  

# 查看容器是否運行
 [root@chucong zhucong]# docker ps 
 CONTAINER ID   IMAGE         COMMAND                   CREATED          STATUS          PORTS                                                  NAMES
 e5776a980697   mysql:9.1.0   "docker-entrypoint.s…"   59 minutes ago   Up 43 minutes   33060/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp   mysql-slave1
 0bb3a700077c   mysql:9.1.0   "docker-entrypoint.s…"   59 minutes ago   Up 43 minutes   33060/tcp, 0.0.0.0:3308->3306/tcp, :::3308->3306/tcp   mysql-slave2
 af2f63aa00e8   mysql:9.1.0   "docker-entrypoint.s…"   59 minutes ago   Up 4 seconds    0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql-master

3 主從復制操作

3.1 MASTER 操作指令

[root@chucong mysql_zhucong]# docker exec -it mysql-master bash
bash-5.1# mysql -uroot -proot
 ?
 ?
 # 假如說沒有設置變量自動創(chuàng)建可以手動創(chuàng)建,設置了可以省略以下命令
 mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'root';
 ?
 # 賦予所有庫所有表 repl 用戶 REPLICATION SLAVE 的權限
 mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
 mysql> FLUSH PRIVILEGES;
 ?
 mysql> SHOW BINARY LOG STATUS\G         # 與過往版本不一樣了,以前為 SHOW MASTER status\G
 *************************** 1. row ***************************
              File: mysql-bin.000034         # 注意此處的
          Position: 198                      # 還有此出處,這兩行在從庫操作的時候有至關重要的作用
      Binlog_Do_DB: 
  Binlog_Ignore_DB: 
 Executed_Gtid_Set: d83de5a7-b723-11ef-a65b-0242c0a80104:1-2
 1 row in set (0.00 sec)

3.2 SLAVE1 操作指令

 [root@chucong mysql_zhucong]# docker exec -it mysql-slave1 bash
 bash-5.1# mysql -uroot -proot
 ?
 # 假如說沒有設置變量自動創(chuàng)建可以手動創(chuàng)建,設置了可以省略以下命令
 mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'root';
 ?
 # 以下這整條命令也是發(fā)生了巨大的改變,并且不需要指定端口了
 mysql> CHANGE REPLICATION SOURCE TO
 SOURCE_HOST='192.168.1.2',          # MASTER 的 IP
 SOURCE_USER='repl',                 # 創(chuàng)建的用戶
 SOURCE_PASSWORD='root',             # 密碼
 SOURCE_LOG_FILE='mysql-bin.000034', # 為主庫使用 SHOW BINARY LOG STATUS\G 中的File值
 GET_SOURCE_PUBLIC_KEY=1,            # 此處注意 自動獲取主服務器的公鑰(適用于caching_sha2_password)
 SOURCE_LOG_POS=198;                 # 為主庫使用 SHOW BINARY LOG STATUS\G 中的Position值
 ?
 # 舊版本的命令如下,可指定端口
 # mysql> CHANGE MASTER TO 
 #    -> MASTER_HOST='192.168.1.2',
 #    -> MASTER_PORT=3306,
 #    -> MASTER_USER='repl',
 #    -> MASTER_PASSWORD='root',
 #    -> MASTER_LOG_FILE='mysql-bin.000034',
 #    -> MASTER_LOG_POS=198;
 ?
 ?
 ?
 mysql> START REPLICA;       # 啟動復制  9.1.0 變化的命令 以前版本為 START SLAVE;
 mysql> SHOW REPLICA STATUS; # 啟動復制  9.1.0 變化的命令 以前版本為 SHOW SLAVE STATUS;
 ?
 mysql> SHOW REPLICA STATUS\G
 *************************** 1. row ***************************
              Replica_IO_State: Waiting for source to send event
                   Source_Host: 192.168.1.2
                   Source_User: repl
                   Source_Port: 3306
                 Connect_Retry: 60
               Source_Log_File: mysql-bin.000034
           Read_Source_Log_Pos: 7061047
                Relay_Log_File: e5776a980697-relay-bin.000002
                 Relay_Log_Pos: 7061177
         Relay_Source_Log_File: mysql-bin.000034
            Replica_IO_Running: Yes      # IO 線程YES表示已經連接成功,如果不是會顯示no或者connect
           Replica_SQL_Running: Yes      

3.3 SLAVE2 操作指令

[root@chucong mysql_zhucong]# docker exec -it mysql-slave2 bash
 bash-5.1# mysql -uroot -proot
 ?
 # 假如說沒有設置變量自動創(chuàng)建可以手動創(chuàng)建,設置了可以省略以下命令
 mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'root';
 ?
 # 以下這整條命令也是發(fā)生了巨大的改變,并且不需要指定端口了
 mysql> CHANGE REPLICATION SOURCE TO
 SOURCE_HOST='192.168.1.2',          # MASTER 的 IP
 SOURCE_USER='repl',                 # 創(chuàng)建的用戶
 SOURCE_PASSWORD='root',             # 密碼
 SOURCE_LOG_FILE='mysql-bin.000034', # 為主庫使用 SHOW BINARY LOG STATUS\G 中的File值
 GET_SOURCE_PUBLIC_KEY=1,            # 此處注意 自動獲取主服務器的公鑰(適用于caching_sha2_password)
 SOURCE_LOG_POS=198;                 # 為主庫使用 SHOW BINARY LOG STATUS\G 中的Position值
 ?
 # 舊版本的命令如下,可指定端口
 # mysql> CHANGE MASTER TO 
 #    -> MASTER_HOST='192.168.1.2',
 #    -> MASTER_PORT=3306,
 #    -> MASTER_USER='repl',
 #    -> MASTER_PASSWORD='root',
 #    -> MASTER_LOG_FILE='mysql-bin.000034',
 #    -> MASTER_LOG_POS=198;
 ?
 mysql> START REPLICA;       # 啟動復制  9.1.0 變化的命令 以前版本為 START SLAVE;
 mysql> SHOW REPLICA STATUS; # 啟動復制  9.1.0 變化的命令 以前版本為 SHOW SLAVE STATUS;
 ?
 mysql> SHOW REPLICA STATUS\G
 *************************** 1. row ***************************
              Replica_IO_State: Waiting for source to send event
                   Source_Host: 192.168.1.2
                   Source_User: repl
                   Source_Port: 3306
                 Connect_Retry: 60
               Source_Log_File: mysql-bin.000034
           Read_Source_Log_Pos: 7061047
                Relay_Log_File: 0bb3a700077c-relay-bin.000002
                 Relay_Log_Pos: 7061177
         Relay_Source_Log_File: mysql-bin.000034
            Replica_IO_Running: Yes
           Replica_SQL_Running: Yes

4 驗證是否實現(xiàn)主從

4.1 導入sql腳本查看是否正常主從復制

 # MASTER
 [root@chucong ~]# docker cp smart_work_v3.sql mysql-master:/
 Successfully copied 6.53MB to mysql-master:/
 [root@chucong ~]# docker exec -it mysql-master bash
 bash-5.1# ls 
 afs  boot  docker-entrypoint-initdb.d  home  lib64  mnt  proc  run   smart_work_v3.sql  sys  usr
 bin  dev   etc                         lib   media  opt  root  sbin  srv                tmp  var
 ?
 bash-5.1# mysql -uroot -proot
 mysql> CREATE DATABASE shuyan;  # 創(chuàng)建數(shù)據(jù)庫
 mysql> USE shuyan   # 切換到數(shù)據(jù)庫
 Database changed
 ?
 mysql> SOURCE smart_work_v3.sql # 導入sql腳本
 ?
 mysql> SHOW TABLES;
 +----------------------------------------+
 | Tables_in_shuyan                       |
 +----------------------------------------+
 | aaa                                    |
 | abi_http_log                           |
 | act_app_appdef                         |
 | act_app_databasechangelog              |
 | act_app_databasechangeloglock          |
 | act_app_deployment                     |
 | act_app_deployment_resource            |
 | act_cmmn_casedef                       |
 +----------------------------------------+

4.2 檢驗從庫是否看見復制是否成功

mysql> USE shuyan;
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A
 ?
 Database changed
 mysql> SHOW TABLES;
 +----------------------------------------+
 | Tables_in_shuyan                       |
 +----------------------------------------+
 | aaa                                    |
 | abi_http_log                           |
 | act_app_appdef                         |
 | act_app_databasechangelog              |
 | act_app_databasechangeloglock          |
 | act_app_deployment                     |
 | act_app_deployment_resource            |
 | act_cmmn_casedef                       |
 | act_cmmn_databasechangelog             |
 | act_cmmn_databasechangeloglock         |
 | act_cmmn_deployment                    |
 +----------------------------------------+

到此這篇關于MySQL9.1.0實現(xiàn)最基礎主從復制的步驟的文章就介紹到這了,更多相關MySQL9.1.0 主從復制內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • MySQL約束條件及設置方式

    MySQL約束條件及設置方式

    文章主要介紹了數(shù)據(jù)庫中約束條件的設置,包括主鍵約束、自增約束、非空約束、唯一性約束、無符合約束、默認約束和外鍵約束,以及如何在數(shù)據(jù)庫中設置這些約束條件
    2025-01-01
  • Ubuntu上安裝MySQL+問題處理+安全優(yōu)化

    Ubuntu上安裝MySQL+問題處理+安全優(yōu)化

    這篇文章主要匯總介紹了Ubuntu上安裝MySQL+問題處理+安全優(yōu)化的相關事項,非常的細致全面,有需要的小伙伴可以參考下
    2016-03-03
  • MySQL中的最左匹配原則

    MySQL中的最左匹配原則

    這篇文章主要介紹了MySQL中的最左匹配原則,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • MySQL中DATE_FORMAT()函數(shù)的具體使用

    MySQL中DATE_FORMAT()函數(shù)的具體使用

    本文主要介紹了MySQL中DATE_FORMAT()函數(shù)的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • 關于SqlServer中datediff用法

    關于SqlServer中datediff用法

    datediff是SQL SERVER里面的用法,ORACLE沒有,主要作用是返回兩個日期之間的時間間隔,本文通過實例代碼給大家詳細講解,對datediff用法感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • MYSQL單表操作學習之DDL、DML及DQL語句示例

    MYSQL單表操作學習之DDL、DML及DQL語句示例

    DML、DDL、DCL和DQL是數(shù)據(jù)庫中常用的四種語言,分別用于數(shù)據(jù)操作、數(shù)據(jù)定義、數(shù)據(jù)控制和數(shù)據(jù)查詢,下面這篇文章主要給大家介紹了關于MYSQL單表操作學習之DDL、DML及DQL語句的相關資料,需要的朋友可以參考下
    2024-03-03
  • 在MySQL中使用STRAIGHT_JOIN的教程

    在MySQL中使用STRAIGHT_JOIN的教程

    這篇文章主要介紹了在MySQL中使用STRAIGHT_JOIN的教程,包括使用STRAIGHT_JOIN進行一些性能上的優(yōu)化的技巧,需要的朋友可以參考下
    2015-05-05
  • mysql5.7版本root密碼登錄問題的解決方法

    mysql5.7版本root密碼登錄問題的解決方法

    這篇文章主要為大家詳細介紹了mysql5.7版本root密碼登錄問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • MYSQL常用字符串函數(shù)和時間函數(shù)示例詳解

    MYSQL常用字符串函數(shù)和時間函數(shù)示例詳解

    字符串函數(shù)是最常用的的一種函數(shù),在一個具體應用中通常會綜合幾個甚至幾類函數(shù)來實現(xiàn)相應的應用,這篇文章主要介紹了MYSQL常用字符串函數(shù)和時間函數(shù)的相關資料,需要的朋友可以參考下
    2025-07-07
  • 在CentOS上運行MySQL報錯Too many connections(連接數(shù)打滿)的解決方案

    在CentOS上運行MySQL報錯Too many connections(連接數(shù)打滿)的解決方案

    在CentOS服務器上運維MySQL時,經常會遇到 Too many connections 報錯,尤其是通過 mysqld_safe 腳本啟動、而非系統(tǒng) systemctl 管理的MySQL實例,本文結合實際運維場景,詳細講解該報錯的原因、應急解決步驟、永久優(yōu)化方案,需要的朋友可以參考下
    2026-03-03

最新評論

宁陵县| 长岭县| 甘南县| 绥中县| 开远市| 汉中市| 富川| 英吉沙县| 东乡县| 大悟县| 五河县| 明光市| 定兴县| 阜康市| 丽江市| 许昌市| 恩施市| 肇庆市| 兴安县| 修水县| 宁南县| 新兴县| 许昌市| 故城县| 达尔| 乐东| 万盛区| 兖州市| 明溪县| 盖州市| 蕉岭县| 仙居县| 甘肃省| 化州市| 南宫市| 湘潭县| 通州市| 乐都县| 广汉市| 乌鲁木齐县| 应城市|