1. 程式人生 > 其它 >資料庫主從同步配置

資料庫主從同步配置

技術標籤:資料庫mysqllinuxjavacentos

1、架構規劃

兩臺主機進行配置,一個放主資料庫,另一個放置從資料庫
192.168.209.129 master
192.168.209.130 slave

2、修改兩個主機的資料庫配置,使用的相同的命令

命令: vi /etc/my.cnf

master主機

binlog:主要作用是用於資料庫的主從複製及資料的增量恢復-----配置形式log-bin-mysql

【mysqld】在這個名稱下,進行配置
server-id=1 log-bin=mysql-bin log-slave-updates slave-skip-errors=all

slave主機

【mysqld】在這個名稱下,進行配置
server-id=2 log-bin=mysql-bin log-slave-updates slave-skip-errors=all

示例

3、重啟資料庫服務

systemctl restart mysqld

4、檢視servier_id是否配置生效

  該命令是在資料庫中執行,必須進入資料庫mysql -uroot -proot

SHOW VARIABLES like 'server_id';

5、登入master節點執行如下命令

  這個存在的主資料庫的主機上,進行檢視

show master status;

6、登入從節點

  從節點具有slave主機上,輸入以下命令,找到主節點

change master to 
master_host='192.168.209.129',
master_user='root',
master_password='root',
master_log_file='mysql-bin.000002',
master_log_pos=155;

7、開啟從節點

start slave;   開啟 
stop slave;    關閉

8、檢視節點開啟狀態

show slave status\G; 
************************** 

1. row ***************************
Slave_IO_State: Waiting for master to send event Master_Host: 10.15.0.9
Master_User: root
Master_Port: 3306 Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 120
Relay_Log_File: mysqld-relay-bin.000002
Relay_Log_Pos: 283
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

如果輸出IO和sql執行都沒錯,表示配置成功。錯一個都表示失敗。
檢視日誌調整錯誤
 cat /var/log/mysqld.log

錯誤祕籍

1、MySQL主從複製,啟動slave時報錯Slave failed to initialize relay log info structure from the repository

  slave reset執行候做了這樣幾件事:
  a、刪除slave_master_info ,slave_relay_log_info兩個表中資料;
  b、刪除所有relay log檔案,並重新建立新的relay log檔案;
  c、不會改變gtid_executed 或者 gtid_purged的值

解決

mysql> reset slave; 
Query OK, 0 rows affected (0.12 sec)

mysql> start slave;
Query OK, 0 rows affected (0.11 sec)
2、克隆主機,將資料庫的uuid也複製過來了
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.

解決

  a、檢視資料目錄生成的路徑:datadir

  cat /etc/my.cnf

 

  b、編輯auto.cnf中內容:vi auto.cnf

  刪除uuid