程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MYSQL主從復制搭建全過程實戰---探索不能實時同步的關鍵性參數

MYSQL主從復制搭建全過程實戰---探索不能實時同步的關鍵性參數

編輯:MySQL綜合教程

MYSQL主從復制搭建全過程實戰---探索不能實時同步的關鍵性參數


一、主庫操作 

1、全庫導出
mysqldump -h192.168.1.6 --all-databases -uroot -proot --opt --add-drop-database --add-drop-table --events --triggers --routines --default-character-set=utf8 --master-data=2 --single-transaction --complete-insert --quote-names --log-error=/gyj/mysqldump20150520.log > /gyj/backup_20150520.mysql


2、獲得導出時候的mysql的binlog的位置
(head -50 backup_20150520.mysql或者tail -50 backup_20150520.mysql)


----CHANGE MASTER TO MASTER_LOG_FILE='binlog.000001', MASTER_LOG_POS=529372;


3、拷貝主庫備份到從備
[root@uubee6 gyj]# scp backup_20150520.mysql [email protected]:/gyj/


二、備庫操作
1、清空備庫數據庫(保留information_schema、performance_schema、mysql三個庫),然後導入主庫的數據
確認慢日志有沒有關閉:SET GLOBAL slow_query_log=off;
如果沒關閉導入時會報錯:ERROR 1580 (HY000) at line 3405: You cannot 'DROP' a log table if logging is enabled


mysql -h192.168.1.8 -uroot -proot < /gyj/backup_20150520.mysql



三、主庫操作
1、建復制用戶
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'slavepass';

 

四、備庫操作

1、在從庫配置連接主庫,執行以下命令
CHANGE MASTER TO
MASTER_HOST='192.168.1.6',
MASTER_USER='repl',
MASTER_PASSWORD='slavepass',
MASTER_PORT=3306,
MASTER_LOG_FILE='binlog.000001',
MASTER_LOG_POS=529372,
MASTER_CONNECT_RETRY=10;



2、啟動從庫
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)




3、查詢slave狀態:
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.6
Master_User: repl
Master_Port: 3306
Connect_Retry: 10
Master_Log_File: binlog.000001
Read_Master_Log_Pos: 657284
Relay_Log_File: relaylog.000002
Relay_Log_Pos: 128192
Relay_Master_Log_File: binlog.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 657284
Relay_Log_Space: 128358
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 101
Master_UUID: c811e75a-d875-11e4-8bb1-b083fede6c94
Master_Info_File: /u01/my3306/data/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
1 row in set (0.00 sec)


ERROR:
No query specified




五、測試
1、主庫操作
mysql> select * from t1;
+------+
| id |
+------+
| 1 |
+------+
1 row in set (0.00 sec)


mysql> insert into t1 values(2);
Query OK, 1 row affected (0.00 sec)


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


mysql> select * from t1;
+------+
| id |
+------+
| 1 |
| 2 |
+------+
2 rows in set (0.00 sec)


2、備庫操作
mysql> select * from t1;
+------+
| id |
+------+
| 1 |
+------+
1 row in set (0.00 sec)



3、備庫上沒有同步過去,但我在備庫操作flush logs;命令就能同步過來!




4、查主庫上的幾個參數:
mysql> show variables like '%autocommit%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit | ON |
+---------------+-------+
1 row in set (0.00 sec)

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


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




5、找到原因:sync_binlog=100,在主庫把參數:sync_binlog設為1即可!!!
set global sync_binlog=1; ---最好永久設置改my.cnf配置文件



6、記下常用幾個命令
reset master;
show master status\G;
show binlog events in 'binlog.000001';
flush logs;

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved