記錄一下mariadb設置主從同步的過程[虛擬機測試]

背景:由於工做的關係,須要找尋實時同步數據到另外系統的服務器的數據庫上,查詢下來,用mariadb進行跨服務器的同步數據動做,用主從同步比較多,也比較保險mysql

也有使用shell腳本的,定時定候的執行mysqldump的shell腳本,可是若是crontab壞掉了,或是被取消,甚至時間被更改,數據庫被改動密碼等等,就須要作更多的異動,sql

可是shell腳本仍是on the table的,能夠深入的考慮一下。shell

 

下面呢,就開始此次主從同步的設置經驗。數據庫

 

前置準備:服務器

先要將須要同步的表格數據利用mysqldump作一個同步,再進行接下來的主從同步是可以保證新增的users可以實時的跑到另一個服務器上去ide

 

同步命令:測試

(主)==> 導出數據: 命令行

mysqldump -uroot -pPassword database table > 1.sql

  

(從)==> 導入數據:rest

mysql -uroot -pPassword  database < 1.sql

  

 

1、機器簡介日誌

主:192.168,60,130

從:192.168.60.129

 

OS版本:CentOS 7.4 

mariaDB版本:5.5

 

2、配置主服務器

1)修改主服務器的mariadb配置文件

打開mariadb的配置文件/etc/my.cnf,在[mysqld]節點下添加以下的內容:

#表示主服務器
server-id = 1
#記錄日誌
log-bin=mysql-bin01  
#提供數據同步服務的數據庫,在此數據庫下的數據可同步到從服務器中  
binlog-do-db=#這裏須要備份什麼數據庫就寫什麼數據庫的名稱
#設置在主服務器上不記錄日誌的數據庫  
binlog-ignore-db=mysql   
#日誌過時時間  
expire_logs_days=10  

  

注意: 若是配置文件已經存在了上述的項目,覆蓋原有的便可

這裏須要重啓一下主服務器的數據庫 ==> systemctl restart mariadb,要否則配置文件的修改不生效,沒法繼續下面的操做

2)查看主服務器的狀態

此步驟要打開數據庫命令行,輸入命令:

MariaDB [mysql]> show master status;
+--------------------+----------+--------------+------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| mysql-bin01.000004 |      1243 | tcloud       | mysql            |
+--------------------+----------+--------------+------------------+

 

這部分須要記住File和Position的值,到以後的配置須要使用

 

3)查看log_bin的狀態

數據庫命令行中,輸入命令:

MariaDB [mysql]> show variables like "%log_bin%";
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| log_bin                         | ON    |
| log_bin_trust_function_creators | OFF   |
| sql_log_bin                     | ON    |
+---------------------------------+-------+

  

此部分若是log_bin是ON,即表示正常開啓。

 

4)建立主服務器用戶及權限(專門爲從服務器鏈接建立一個用戶,和分配一個權限)

MariaDB [mysql] > grant replication slave on *.* to 'mysql'@'192.168.60.129' identified by '123456';

#解釋:

這裏是建立了一個mysql的用戶,密碼爲123456,鏈接本機的數據庫地址爲從服務器的IP,即只容許該用戶擁有從服務器的IP訪問數據庫並備份表的權限

  

這裏還要注意一點:replication 屬於grant權限,後面只能用*.*,不能指定某個數據庫或者某個數據表,若是指定相似select等普通權限可具體到數據表。

 

5) 重啓主服務器的mariadb

 

3、配置從服務器

1) 修改配置文件

打開配置文件/etc/my.cnf,在[mysqld]節點下增長以下內容:

#表示從服務器  
server-id=2  
#記錄日誌  
log-bin=mysql-bin02  
#同步的數據庫   
replicate-do-db=#要同步的數據庫
#同步的數據庫指定表   
replicate-do-db=#要同步的表  
#不記錄日誌的數據庫  
replicate-ignore-db=mysql  
#日誌過時時間  
expire_logs_days=10  

  

2) 打開命令行,執行一下命令,來設置master信息

change master to  
master_host='192.168.60.130',#主服務器地址  
master_user='mysql',#主服務器數據庫用戶名  
master_password='123456',#主服務器數據庫密碼  
master_log_file='mysql-bin01.000004',  #填寫步驟2(2)中File項的值  
master_log_pos=1243; #填寫步驟2(2)中Position的值  

  

3) 重啓從服務器mariadb

 

4) 執行啓動從服務器命令(在從服務器數據庫命令行進行)

MariaDB [mysql] > start slave;

  

5) 查看slave的運行狀態命令

MariaDB [mysql] > start slave;

  

查看User值爲system user的項,若是其State值爲「Waiting for master to send event」和」Slave has read all relay log: waiting for the slave I/O thread to update it「,則從服務器已鏈接主服務器。

 

6) 查看slave運行狀態

MariaDB [mysql] > show slave status;  

  

若是Slave_IO_Running的值爲Yes,Slave_SQL_Running的值爲Yes,則從服務器正常運行。若是不正確,查看錯誤日誌,通常位於data目錄下。

 

4、測試

從服務器數據庫中新建數據庫pension,主服務器中新建表並插入數據,查看從服務器數據庫,是否存在相同的數據庫表及數據。

 

PS: 

若是以上的修改沒有正常,而且在中間出現的配置文件配置的問題,則須要先在從服務器的mariadb命令行裏先stop slave,而後再修改其餘的問題

 

修改完成後,去查看一下主服務器的狀態是否已經改變 show master status(重點關注File和Position參數)

 

若是改變了要從新記下來,而後在slave的服務器上再次執行change master to .... ==> start slave (這樣的過程)

相關文章
相關標籤/搜索