1. <dd id="erndk"></dd>
                1. 記錄一個Mysql 主從 主主復制,

                  互聯網 2022/5/2 19:13:22

                  這里記錄一下別人的記錄,https://www.xdx97.com/article/712671146654302208一、環境準備我們需要準備兩臺MySql,我這里使用docker,那么我就需要開啟兩個MySql容器就好了。docker安裝MySql看這里 Docker安裝MySql并啟動docker相關命令 Docker常用命令【鏡像、容器、Fil…

                  這里記錄一下別人的記錄,https://www.xdx97.com/article/712671146654302208

                   

                  一、環境準備

                  我們需要準備兩臺MySql,我這里使用docker,那么我就需要開啟兩個MySql容器就好了。
                  docker安裝MySql看這里 Docker安裝MySql并啟動
                  docker相關命令 Docker常用命令【鏡像、容器、File】持續更新…


                  二、主從復制

                  2-1:配置主服務器

                  2-1-1:配置主服務器的 my.cnf 添加以下內容

                  [mysqld] ## 同一局域網內注意要唯一 server-id=1 ## 開啟二進制日志功能,可以隨便?。P鍵) log-bin=mysql-bin

                  如果你是使用我上面那種方式啟動的MySql,那么你只需要去你相關聯的宿主機的配置文件夾里面去建立一個 my.cnf 然后寫入上面的類容就好了。

                  比如:我的啟動命令如下(不應該換行的,這里為了方便查看,我給它分行了)

                  那么我只需要在 /docker/mysql_master/conf 這個目錄下創建 my.cnf 文件就好了。

                  docker run -p 12345:3306 --name mysql_master -v /docker/mysql_master/conf:/etc/mysql/conf.d -v /docker/mysql_master/logs:/logs -v /docker/mysql_master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

                  2-1-2:重啟服務

                  這個命令是需要在容器里面執行的

                  service mysql restart

                  docker重啟mysql會關閉容器,我們需要重啟容器。

                  2-1-3:查看 skip_networking 的狀態

                  確保在主服務器上 skip_networking 選項處于 OFF 關閉狀態, 這是默認值。
                  如果是啟用的,則從站無法與主站通信,并且復制失敗。

                  mysql> show variables like '%skip_networking%'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | skip_networking | OFF | +-----------------+-------+ 1 row in set (0.00 sec)

                  2-1-4:創建一個專門用來復制的用戶

                  CREATE USER 'repl'@'%' identified by '123456'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

                  2-2:配置從服務器

                  2-2-1:配置從服務器的 my.cnf (和上面一致)

                  [mysqld] server-id=2

                  我的命令如下

                  docker run -p 12346:3306 --name mysql_from -v /docker/mysql_from/conf:/etc/mysql/conf.d -v /docker/mysql_from/logs:/logs -v /docker/mysql_from/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

                  2-2-2:重啟 從服務器 (和上面一致)

                  2-2-3:配置連接到主服務器的相關信息

                  在從服務器配置連接到主服務器的相關信息 (在容器里面的mysql執行)

                  mysql> CHANGE MASTER TO MASTER_HOST='xxxxx', MASTER_PORT=3306,MASTER_USER='repl',MASTER_PASSWORD='123456';

                  上面代碼的xxxxx你需要換成你的IP,docker 查看容器 IP 的命令如下:

                  docker inspect --format=’{{.NetworkSettings.IPAddress}}’ 容器名稱/容器id

                  啟動的那個從服務器的線程

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

                  2-2-4:查看同步狀態

                  mysql> show slave status \G;

                  image.png


                  2-3:測試

                  測試的話,你可以在主服務器里面,創建一個數據庫,發現從服務器里面也有了,就成功了。


                  2-4:其它

                  2-4-1 :如果你還想要一個從服務器,那么你只需要按照上面配置從服務器再配置一個就行了,

                  2-4-2 :新建的從服務器,會自動保存主服務器之前的數據。(測試結果)


                  三、主主復制

                  如果你上面的主從復制搞定了,那么這個主主復制就很簡單了。我們把上面的從服務器也改成主服務器

                  1、修改上面的從服務器的my.cnf文件,和主服務器的一樣(注意這個server-id不能一樣)然后重啟服務器

                  2、在從服務器里面創建一個復制用戶創建命令一樣(這里修改一下用戶名可以改為 repl2)

                  3、在之前的主服務器里面運行下面這個代碼

                  CHANGE MASTER TO MASTER_HOST='xxxx', MASTER_PORT=3306,MASTER_USER='repl2',MASTER_PASSWORD='123456'; start slave;

                  4、測試



                  四、其它

                  上面主要是教你怎么搭建一個MySql集群,但是這里面還有很多其它的問題。也是我在學習過程中思考的問題,可能有的小伙伴上來看到文章長篇大論的看不下去,只想去實現這樣一直集群功能,所以我就把問題寫在下面了。

                  1、MySQL的replication和pxc

                  MySql的集群方案有replication和pxc兩種,上面是基于replication實現的。

                  replication: 異步復制,速度快,無法保證數據的一致性。
                  pxc: 同步復制,速度慢,多個集群之間是事務提交的數據一致性強。


                  2、MySQL的replication數據同步的原理

                  我們在配置的時候開啟了它的二進制日志,每次操作數據庫的時候都會更新到這個日志里面去。主從通過同步這個日志來保證數據的一致性。


                  3、可否不同步全部的數據

                  可以配置,同步哪些數據庫,甚至是哪些表。


                  4、怎么關閉和開始同步

                  mysql> STOP SLAVE; mysql> START SLAVE;

                  5、我就我的理解畫出了,主從、主從從、主主、復制的圖。

                  image.png


                  6、視頻講解

                  https://www.bilibili.com/video/BV1BK4y1t7MY/



                  參考

                  https://www.jianshu.com/p/faf0127f1cb2
                  https://www.cnblogs.com/songwenjie/p/9371422.html

                  隨時隨地學軟件編程-關注百度小程序和微信小程序
                  關于找一找教程網

                  本站文章僅代表作者觀點,不代表本站立場,所有文章非營利性免費分享。
                  本站提供了軟件編程、網站開發技術、服務器運維、人工智能等等IT技術文章,希望廣大程序員努力學習,讓我們用科技改變世界。
                  [記錄一個Mysql 主從 主主復制,]http://www.yachtsalesaustralia.com/tech/detail-318770.html

                  贊(0)
                  關注微信小程序
                  程序員編程王-隨時隨地學編程

                  掃描二維碼或查找【程序員編程王】

                  可以隨時隨地學編程啦!

                  技術文章導航 更多>
                  国产在线拍揄自揄视频菠萝

                        1. <dd id="erndk"></dd>