本文目錄一覽:
- 1、如何在一台windows主機上搭建mysql主從配置
- 2、安全最重要!MySQL配置主從複製,主主複製
- 3、如何用mysql搭配主從數據庫
- 4、mysql (percona)5.7 安裝及主從配置
如何在一台windows主機上搭建mysql主從配置
1、首先要在本地建立兩個mysql服務(參考這裡),指定不同的端口。我這裡一個主(3306),一個從(3307)。2、然後修改主配置文件:
[mysqld]
server-id = 1
binlog-do-db=test #要同步的數據庫
#binlog-ignore-db=mysql #不同步的數據庫,如果指定了binlog-do-db這裡應該可以不用指定的
log-bin=mysql-bin #要生成的二進制日記文件名稱
修改從配置文件:
[mysqld]
server-id = 2
log-bin = mysql-bin
replicate-do-db=test
3、在主庫添加一個用戶 repl 並指定replication權限
create user ‘repl’@’127.0.0.1’ identified by ‘asdf’;
GRANT REPLICATION SLAVE ON *.* TO ‘repl’@’127.0.0.1’; — –這裡我指定數據庫(test.*)時報錯,而指定全庫(*.*)時會成功。
4、保持主從mysql的test數據庫初始狀態一致。
一般是先將所有的表加讀鎖,然後copy磁盤上的數據庫文件夾。我這裡直接停止服務,然後將數據文件拷貝過去。
5、在主數據庫裡面運行show master status;記下file和position字段對應的參數。
mysql show master status;
安全最重要!MySQL配置主從複製,主主複製
為了保障數據的安全與穩定性,我們常用數據庫的主從複製與主主複製來實現。主從複製為從機實時拷貝一份主機的數據,當主機有數據變化時,從機的數據會跟着變,當從機數據有變化時,主機數據不變;同樣地,主主複製就是,多個主機之間,只要有一個主機的數據變化了,其它主機數據也會跟着變化。
添加以下內容
如果你是使用我之前那種方式啟動的MySQL,那麼你只需要去你相關聯的宿主機的配置文件夾裡面去建立一個 my.cnf 然後寫入上面的類容就好了。
比如:我的啟動命令如下(不應該換行的,這裡為了方便查看,我給它分行了)
那麼我只需要在 /docker/mysql_master/conf 這個目錄下創建 my.cnf 文件就好了。
這個命令是需要在容器裡面執行的
docker重啟mysql會關閉容器,我們需要重啟容器。
確保在主服務器上 skip_networking 選項處於 OFF 關閉狀態, 這是默認值。 如果是啟用的,則從站無法與主站通信,並且複製失敗。
我的命令如下
在從服務器配置連接到主服務器的相關信息 (在容器裡面的mysql執行)
上面代碼的xxxxx你需要換成你的IP,docker 查看容器 IP 的命令如下:
啟動的那個從服務器的線程
測試的話,你可以在主服務器裡面,創建一個數據庫,發現從服務器裡面也有了,就成功了。
如果你還想要一個從服務器,那麼你只需要按照上面配置從服務器再配置一個就行了,新建的從服務器,會自動保存主服務器之前的數據。(測試結果) 如果你上面的主從複製搞定了,那麼這個主主複製就很簡單了。我們把上面的從服務器也改成主服務器
1)、修改上面的從服務器的my.cnf文件,和主服務器的一樣(注意這個server-id不能一樣)然後重啟服務器 2)、在從服務器裡面創建一個複製用戶創建命令一樣(這裡修改一下用戶名可以改為 repl2) 3)、在之前的主服務器裡面運行下面這個代碼
上面主要是教你怎麼搭建一個MySQL集群,但是這裡面還有很多其它的問題。也是我在學習過程中思考的問題,可能有的小夥伴上來看到文章長篇大論的看不下去,只想去實現這樣一直集群功能,所以我就把問題寫在下面了。
1)、MySQL的replication和pxc MySQL的集群方案有replication和pxc兩種,上面是基於replication實現的。
replication: 異步複製,速度快,無法保證數據的一致性。 pxc: 同步複製,速度慢,多個集群之間是事務提交的數據一致性強。
2)、MySQL的replication數據同步的原理 我們在配置的時候開啟了它的二進制日誌,每次操作數據庫的時候都會更新到這個日誌裡面去。主從通過同步這個日誌來保證數據的一致性。
3)、可否不同步全部的數據 可以配置,同步哪些數據庫,甚至是哪些表。
4)、怎麼關閉和開始同步
5)、我就我的理解畫出了,主從、主從從、主主、複製的圖。
往期推薦:
利用Docker僅花1分鐘時間安裝好MySQL服務
Linux下MySQL 5.7的離線與在線安裝(圖文)
Linux下安裝MySQL8.0(收藏!)
如何用mysql搭配主從數據庫
兩台機器,192.168.162.128(主) 192.168.162.130(從)
配置主的配置文件
vi /etc/my.cnf
創建複製用戶並授權給從服務器
grant replication slave on *.* to ‘rpl’@’192.168.162.130’ identified by ‘123456’;
重啟主服務器的MySQL /etc/init.d/mysqld restart
查看master信息: 進入MySQL show master status \G;
修改從庫配置文件
vi /etc/my.cnf
重啟從服務器MySQL,進入MySQL
指定主服務器IP等信息
change master to master_host=’192.168.162.128 ‘,master_user=’rpl’,master_password=’123456′,master_log_file=’mysql-bin.000001′,master_log_pos=647;
啟動slave :start slave;
查看slave狀態:show slave status \G;
報錯Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work
意思是主和從必須都要有不同的uuid,我們分別去查看下主從的uuid
主:server-uuid=4e6c5a78-1e9a-11e7-8c65-000c29426312
查看從庫uuid 從庫uuid:server-uuid=4e6c5a78-1e9a-11e7-8c65-000c29426312
可以看出是真的一樣,原因在於 我是先安裝了一個虛擬機並裝好MySQL,後面有複製了一遍,作為從服務器,所以導致了這個UUID是一樣的。
接下來就是解決這個UUID問題,將從庫上的auto.cnf 備份下。然後重啟從庫。再看下從庫的UUID
[auto]
server-uuid=2e9c834a-1eb2-11e7-864b-000c2928472e
再次查看從庫狀態
從庫狀態正常了
11.測試主從是否正常
主庫上創建一個測試庫,test :create database test;
創建測試表:
create table test.test(
id int,
username varchar(10)
)ENGINE=’innodb’
12.查看從庫:
正常,說明主從搭建成功
mysql (percona)5.7 安裝及主從配置
開始安裝:
注意提示需要安裝net-tools包:
按順序安裝:
查詢日誌裡面的初始化密碼:
修改密碼:
1,設置utf-8字符格式,兩個主機配置相同
授權
主機(master)添加配置文件信息:
主機添加配置信息:
從機添加的配置信息:
master服務器查看MySQL狀態:
運行slave服務器MySQL(從服務器):執行接入master服務器MySQL服務語句:
運行:
主庫上操作
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/195277.html