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

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

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

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

本次實(shí)驗(yàn) 使用 docker 鏡像,開啟三個(gè)容器,實(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 啟動(dòng)容器

 [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è)置變量自動(dòng)創(chuàng)建可以手動(dò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                      # 還有此出處,這兩行在從庫操作的時(shí)候有至關(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è)置變量自動(dòng)創(chuàng)建可以手動(dò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,            # 此處注意 自動(dòng)獲取主服務(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;       # 啟動(dòng)復(fù)制  9.1.0 變化的命令 以前版本為 START SLAVE;
 mysql> SHOW REPLICA STATUS; # 啟動(dòng)復(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)連接成功,如果不是會(huì)顯示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è)置變量自動(dòng)創(chuàng)建可以手動(dò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,            # 此處注意 自動(dòng)獲取主服務(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;       # 啟動(dòng)復(fù)制  9.1.0 變化的命令 以前版本為 START SLAVE;
 mysql> SHOW REPLICA STATUS; # 啟動(dòng)復(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • 詳解MySQL主從不一致情形與解決方法

    詳解MySQL主從不一致情形與解決方法

    這篇文章主要介紹了詳解MySQL主從不一致情形與解決方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-04-04
  • mysql count(*)分組之后IFNULL無效問題

    mysql count(*)分組之后IFNULL無效問題

    文章總結(jié):作者分享了在解決MySQL中根據(jù)發(fā)票ID和單位統(tǒng)計(jì)單位數(shù)量的問題時(shí)遇到的困難及解決方法,通過使用IFNULL()函數(shù)和CASEWHEN都無法解決問題,最終作者選擇了嵌套循環(huán)的方法來實(shí)現(xiàn)需求,并總結(jié)了經(jīng)驗(yàn)以供參考
    2024-11-11
  • CentOS下將MySQL 5.1升級(jí)到MySQL 5.5的步驟

    CentOS下將MySQL 5.1升級(jí)到MySQL 5.5的步驟

    這篇文章主要介紹了CentOS下將MySQL 5.1升級(jí)到MySQL 5.5的步驟,需要的朋友可以參考下
    2015-08-08
  • Qt如何編譯MySQL數(shù)據(jù)庫驅(qū)動(dòng)

    Qt如何編譯MySQL數(shù)據(jù)庫驅(qū)動(dòng)

    這篇文章主要介紹了Qt如何編譯MySQL數(shù)據(jù)庫驅(qū)動(dòng),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-12-12
  • mysql中insert與select的嵌套使用解決組合字段插入問題

    mysql中insert與select的嵌套使用解決組合字段插入問題

    本節(jié)主要介紹了mysql中insert與select的嵌套使用解決組合字段插入問題,需要的朋友可以參考下
    2014-07-07
  • 3種高效的Tags標(biāo)簽系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)方案分享

    3種高效的Tags標(biāo)簽系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)方案分享

    這篇文章主要介紹了3種高效的Tags標(biāo)簽系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)方案分享,現(xiàn)在主流的博客、CMS系統(tǒng)都有一個(gè)標(biāo)簽系統(tǒng),本文就探討它的數(shù)據(jù)庫設(shè)計(jì)方式,需要的朋友可以參考下
    2014-07-07
  • MySQL主從復(fù)制配置心跳功能介紹

    MySQL主從復(fù)制配置心跳功能介紹

    這篇文章主要介紹了MySQL主從復(fù)制配置心跳功能介紹,解決Slave has read all relay log; waiting for the slave I/O thread to update it問題,需要的朋友可以參考下
    2014-06-06
  • MySQL事務(wù)隔離機(jī)制詳解

    MySQL事務(wù)隔離機(jī)制詳解

    在數(shù)據(jù)庫中,事務(wù)是指一組邏輯操作,這些操作要么全部執(zhí)行,要么全部不執(zhí)行,是一個(gè)不可分割的工作單位,這篇文章主要介紹了MySQL事務(wù)隔離機(jī)制,需要的朋友可以參考下
    2022-11-11
  • MySQL安裝與配置:手工配置MySQL(windows環(huán)境)過程

    MySQL安裝與配置:手工配置MySQL(windows環(huán)境)過程

    這篇文章主要介紹了MySQL安裝與配置:手工配置MySQL(windows環(huán)境)過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • MySQL億級(jí)數(shù)據(jù)平滑遷移雙寫方案實(shí)戰(zhàn)

    MySQL億級(jí)數(shù)據(jù)平滑遷移雙寫方案實(shí)戰(zhàn)

    預(yù)約業(yè)務(wù)與其他業(yè)務(wù)數(shù)據(jù)表存儲(chǔ)在同一個(gè)數(shù)據(jù)庫,當(dāng)其他業(yè)務(wù)出現(xiàn)慢SQL等異常時(shí),會(huì)影響到預(yù)約業(yè)務(wù),為了提高系統(tǒng)穩(wěn)定性和數(shù)據(jù)隔離性,需要將預(yù)約數(shù)據(jù)表從原來的數(shù)據(jù)庫中遷移出來,單獨(dú)建立數(shù)據(jù)庫,涉及到的讀寫場(chǎng)景多,改造成本大,采用 Mybatis插件實(shí)現(xiàn)遷移所需的雙寫等功能
    2024-08-08

最新評(píng)論