Mysql主從同步配置

1.系統版本都是rhel5 mysql版本相同

2.服務器正在運行,不能停止。
3.
主服務器IP爲:192.168.2.210
 
從服務器IP爲:192.168.2.220
4.
從服務器MSYQL slave 爲停止狀態

配置步驟:
1、主庫創建/etc/my.cnf,修改[mysqld]裏邊的鍵值增加

server-id=1

log-bin=binlog_name

2、主庫增加用戶,用於從庫讀取主庫日誌

grant replication slave,reload,super on *.* to'slave'@'192.168.2.220'identified by '123456'

flush privileges;

3、從庫連接主庫進行測試。

mysql -u slave -p -h 192.168.2.210 //masterIP

4、停從庫,修改從庫/etc/my.cnf,增加選項:

[mysqld]

server-id=2

master-host=192.168.2.210

master-user=slave

master-password=123456

5.鎖表

mysql > FLUSH TABLES WITH READ LOCK

注意:爲了保證FLUSH TABLES語句讓讀鎖定保持有效。(如果退出客戶程序,鎖被釋放)。建立新的SSH連接,然後對主服務器上的數據進行快照。

6.建立快照
tar -cvf data.tar /var/lib/mysql
將壓縮包拷貝過去後解壓縮

也可以用scp拷貝過去:
scp -r /var/lib/mysql/* 192.168.2.210:/var/lib/mysql/
注意拷貝過去後權限的設置
chown -R mysql.mysql /var/lib/mysql

數據量大可以用mysqldump導出.

7.解鎖

mysql > UNLOCK TABLES

8.記下file pos
FLUSH TABLES WITH READ LOCK所置讀鎖定有效時,讀取主服務器上當前的二進制日誌名(file)和偏移量值(pos)
mysql > SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73       | test         | manual,mysql     |
+---------------+----------+--------------+------------------+
File
列顯示日誌名,而Position顯示偏移量。在該例子中,二進制日誌值爲mysql-bin.003,偏移量爲73。記錄該值。以後設置從服務器時需要
使用這些值。它們表示複製座標,從服務器應從該點(也可以是任何點)開始從主服務器上進行新的更新。

9.從服務器執行同步
# mysql>start slave;
# mysql>load data from master;

10.驗證配置
登錄從服務器輸入如下命令

mysql> show slave status\G;

會得到類似下面的列表:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

都爲yes,則配置正確.

11.進行測試:

主庫創建表,

mysql>create database sampdb;

mysql>use sampdb;

mysql>create table new (name char(20),phone char(20));

mysql>insert into new (’abc‘,’0532555555’);
主從服務器重啓;

打開從庫,查看:
#mysql -u root -p
mysql>show databases; //
應該能看到master創建的庫sampdb

mysql

sampdb

test

mysql>use sampdb;

mysql>show tables;

new

說明主從數據庫創建成功。


附:
一些錯誤信息的處理,主從服務器上的命令,及狀態信息。
在從服務器上使用show slave status\G
Slave_IO_Running,
No,
則說明IO_THREAD沒有啓動,請執行start slave io_thread
Slave_SQL_Running
No
則複製出錯,查看Last_error字段排除錯誤後執行start slave sql_thread
查看Slave_IO_State字段空 //複製沒有啓動
Connecting to master//
沒有連接上master
Waiting for master to send event//
已經連上
主服務器上的相關命令:
show master status
show slave hosts
show logs
show binlog events
purge logs to 'log_name'
purge logs before 'date'
reset master(
老版本flush master)
set sql_log_bin=

從服務器上的相關命令:
slave start
slave stop
SLAVE STOP IO_THREAD //
此線程把master段的日誌寫到本地
SLAVE start IO_THREAD
SLAVE STOP SQL_THREAD //
此線程把寫到本地的日誌應用於數據庫
SLAVE start SQL_THREAD
reset slave
SET GLOBAL SQL_SLAVE_SKIP_COUNTER
load data from master
show slave status(SUPER,REPLICATION CLIENT)
CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,MASTER_USER=, MASTER_PASSWORD= //
動態改變master信息
PURGE MASTER [before 'date']
刪除master端已同步過的日誌

幾個跟熱備有關的mysql命令:(需要在mysql命令行界面或query

    * stop slave    #停止同步
    * start slave    #
開始同步,從日誌終止的位置開始更新。
    * SET SQL_LOG_BIN=0|1 #
主機端運行,需要super權限,用來開停日誌,隨意開停,會造成主機從機數據不一致,造成錯誤
    * SET GLOBAL SQL_SLAVE_SKIP_COUNTER=n #
客戶端運行,用來跳過幾個事件,只有當同步進程出現錯誤而停止的時候纔可以執行。
    * RESET MASTER #
主機端運行,清除所有的日誌,這條命令就是原來的FLUSH MASTER
    * RESET SLAVE   #
從機運行,清除日誌同步位置標誌,並重新生成master.info
     
雖然重新生成了master.info,但是並不起用,最好,將從機的mysql進程重啓一下,
    * LOAD TABLE tblname FROM MASTER #
從機運行,從主機端重讀指定的表的數據,每次只能讀取一個,受timeout時間限制,需要調整timeout時間。執行這個命令需要同步賬號有 reloadsuper權限。以及對相應的庫有select權限。如果表比較大,要增加net_read_timeout net_write_timeout的值
    * LOAD DATA FROM MASTER #
從機執行,從主機端重新讀入所有的數據。執行這個命令需要同步賬號有reloadsuper權限。以及對相應的庫有select權限。如果表比較大,要增加net_read_timeout net_write_timeout的值
    * CHANGE MASTER TO master_def_list #
在線改變一些主機設置,多個用逗號間隔,比如
      CHANGE MASTER TO
      MASTER_HOST='master2.mycompany.com',
      MASTER_USER='replication',
      MASTER_PASSWORD='bigs3cret'
    * MASTER_POS_WAIT() #
從機運行
    * SHOW MASTER STATUS #
主機運行,看日誌導出信息
    * SHOW SLAVE HOSTS #
主機運行,看連入的從機的情況。
    * SHOW SLAVE STATUS (slave)
    * SHOW MASTER LOGS (master)
    * SHOW BINLOG EVENTS [ IN 'logname' ] [ FROM pos ] [ LIMIT [offset,] rows ]
    * PURGE [MASTER] LOGS TO 'logname' ; PURGE [MASTER] LOGS BEFORE 'date'

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章