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

MySQL9.1.0實(shí)現(xiàn)最基礎(chǔ)主從復(fù)制的步驟

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

1 實(shí)驗(yàn)介紹

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

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

2 實(shí)驗(yàn)準(zhǔn)備

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

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

 [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的強(qiáng)一致性 ?
 ?
 [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的強(qiáng)一致性
 ?
 [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的強(qiáng)一致性

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)建復(fù)制用戶
       MYSQL_PASSWORD: root  # 設(shè)置密碼
     ports:
       - 3306:3306
     volumes:
       - /data/master/master-data:/var/lib/mysql # 掛載宿主機(jī)目錄到容器
       - /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 # 掛載宿主機(jī)目錄到容器
       - /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 # 掛載宿主機(jī)目錄到容器
       - /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  # 定義網(wǎng)段
         gateway: 192.168.1.1    # 定義網(wǎng)關(guān)

2.3 啟動容器

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

# 查看容器是否運(yùn)行
 [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 主從復(fù)制操作

3.1 MASTER 操作指令

[root@chucong mysql_zhucong]# docker exec -it mysql-master bash
bash-5.1# mysql -uroot -proot
 ?
 ?
 # 假如說沒有設(shè)置變量自動創(chuàng)建可以手動創(chuàng)建,設(shè)置了可以省略以下命令
 mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'root';
 ?
 # 賦予所有庫所有表 repl 用戶 REPLICATION SLAVE 的權(quán)限
 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                      # 還有此出處,這兩行在從庫操作的時候有至關(guān)重要的作用
      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
 ?
 # 假如說沒有設(shè)置變量自動創(chuàng)建可以手動創(chuàng)建,設(shè)置了可以省略以下命令
 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,            # 此處注意 自動獲取主服務(wù)器的公鑰(適用于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;       # 啟動復(fù)制  9.1.0 變化的命令 以前版本為 START SLAVE;
 mysql> SHOW REPLICA STATUS; # 啟動復(fù)制  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表示已經(jīng)連接成功,如果不是會顯示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
 ?
 # 假如說沒有設(shè)置變量自動創(chuàng)建可以手動創(chuàng)建,設(shè)置了可以省略以下命令
 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,            # 此處注意 自動獲取主服務(wù)器的公鑰(適用于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;       # 啟動復(fù)制  9.1.0 變化的命令 以前版本為 START SLAVE;
 mysql> SHOW REPLICA STATUS; # 啟動復(fù)制  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 驗(yàn)證是否實(shí)現(xiàn)主從

4.1 導(dǎo)入sql腳本查看是否正常主從復(fù)制

 # 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 # 導(dǎo)入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 檢驗(yàn)從庫是否看見復(fù)制是否成功

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                    |
 +----------------------------------------+

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

相關(guān)文章

  • MySQL約束條件及設(shè)置方式

    MySQL約束條件及設(shè)置方式

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

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

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

    MySQL中的最左匹配原則

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

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

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

    關(guān)于SqlServer中datediff用法

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

    MYSQL單表操作學(xué)習(xí)之DDL、DML及DQL語句示例

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

    在MySQL中使用STRAIGHT_JOIN的教程

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

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

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

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

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

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

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

最新評論

鲜城| 江陵县| 普洱| 安塞县| 宁国市| 兰溪市| 庐江县| 汤原县| 阿城市| 桦川县| 河东区| 靖远县| 临夏县| 东莞市| 惠来县| 芦溪县| 大兴区| 博白县| 安庆市| 涞水县| 璧山县| 鸡西市| 治多县| 资兴市| 高碑店市| 伊吾县| 名山县| 莱芜市| 汝阳县| 高雄市| 梅州市| 和顺县| 沙洋县| 达日县| 开化县| 图木舒克市| 塘沽区| 娄底市| 类乌齐县| 蚌埠市| 怀集县|