配置機器:
master server 192.168.0.40
slave server 192.168.0.208 ,此機器上MySQL版本爲5.5.29
接下來開始配置,首先是master server
一、master server1. 配置my.cnf
vim /etc/my.cnf
在[mysqld]中添加
server-id =1 //爲1表示爲Master,不需要更改
log-bin=mysql-bin //日誌爲二進制,無需更改
binlog_format=mixed //二進制日誌的格式,無需更改
binlog-do-db=chinaetax_2_0 //要同步的數據庫(可以有多個)
binlog-do-db=cms_2_0 //要同步的數據庫
binlog-ignore-db=mysql,test,information_schema //不需要同步的數據庫名,多個數據庫中間用逗號(,)隔開
然後把innodb前面的#去掉,結果如下
innodb_data_home_dir = /usr/local/mysql/data/ //innodb的表空間位置
innodb_data_file_path = ibdata1:50M:autoextend //表空間的名字,開始50M
innodb_log_group_home_dir = /usr/local/mysql/data/
innodb_buffer_pool_size = 256M //爲系統內存的50-80%
innodb_additional_mem_pool_size = 20M
innodb_log_file_size = 64M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
然後重啓數據庫,讓配置文件生效
#service mysqld restart
或者 先停止mysql服務,再開啓服務
#service mysqld stop
#/etc/init.d/mysqld start
2、在master server上添加授權賬號,用於slave server對master server的訪問
格式:GRANT REPLICATION SLAVE ON *.* TO '帳號'@'從服務器IP或主機名' IDENTIFIED
BY '密碼';
登錄mysql服務器
#mysql -u root -p
授權
mysql>grant replication slave on *.* to repluser@'192.168.0.208' identified by '123456';
刷新權限列表
mysql>flush privileges;
3、備份master server上數據庫(兩種方式)
第一種:
mysql> flush tables with read lock; //讀鎖
同時要記錄下mysql-bin.000006和1135164
mysql> show master status;
+----------------------------+---------- +--------------------------- + --------------------------------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------------+---------- +--------------------------- + --------------------------------------------------------------------+
| mysql-bin.000006 |1135164 | chinaetax,cms_2_0 | mysql,information_schema,performance_schema,|
+---------------------------- +---------- +--------------------------- + --------------------------------------------------------------------+
1 row in set (0.00 sec)
1 row in set (0.01 sec)
取得快照並記錄日誌名和偏移量
開啓另一個終端對主服務器數據目錄做備份。
#cd /usr/local/mysql/data
#tar -zcvf backup.tar.gz www blog
此時在主庫解開table的鎖定
mysql> unlock tables;
第二種:
#mysqldump -uroot -p -l -F databasename > 路徑
二、slave server
1. vim /etc/my.cnf
log-bin=mysql-bin // 開啓bin-log日誌
binlog_format=mixed
server-id = 2 //server-id不能和master server相同,即不能爲1
master-host = 192.168.0.40 //以下5個配置項在mysql5.5版本以後廢棄
master-user = repluser
master-password = 123456
master-port = 3306
master-connect-retry=60
replicate-do-db=chinaetax_2_0 //告訴slave只做www數據庫的更新
replicate-do-db=cms_2_0 //告訴slave只做blog數據庫的更新
一開始,我也是按照上面這樣配置的,可是,服務器總是啓動不了,報這樣的錯誤,不知大家有沒有遇到過,
The server quit without updating PID file,
後來,查看mysql錯誤日誌,是這樣寫的,
最後在官網上,看到了這個
終於明白了
!!!注意:從MySQL5.5版本開始,master-host,master-user,master-password,等變量已移除,所以纔會出現上面的錯誤,可以在登錄mysql服務器控制檯後,用change master to命令動態改變配置
所以,如果mysql版本是5.5以上,這一步只需配置前三項和後兩項即可,然後重啓服務器
#service mysqld start
2、把從主數據庫服務器備份出來的數據庫導入到從服務器中
先用scp把主服務器上的backup.tar.gz拷貝過來,解壓到/usr/local/mysql/data目錄
#scp backup.tar.gz 192.168.0.208:/usr/local/mysql/data
#cd /usr/local/mysql/data
#tar -xzvf backup.tar.gz
如果是用mysqldump備份的數據庫,在208服務器上直接用mysql命令導入數據庫即可,過程略過
3、對於mysql 5.5以上,這一步必須配置
停止slave服務,設置主服務器的各種參數
mysql>slave stop;
然後敲入以下代碼,一行一行的複製
mysql>change master to
MASTER_HOST='192.168.0.40',
MASTER_USER='repluser',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000006',
MASTER_LOG_POS=1135164;
mysql> slave start;
OK,以上配置結束。
敲入以下命令,查看是否配置成功。
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.0.40
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000006
Read_Master_Log_Pos:1135164
Relay_Log_File: localhost-relay-bin.000002
Relay_Log_Pos: 617
Relay_Master_Log_File: mysql-bin.000006
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: chinaetax_2_0,cms_2_0
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: 1271
Relay_Log_Space: 773
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:
1 row in set (0.01 sec)
在以上各項中,保證以下兩項爲Yes,說明成功。
Slave_IO_Running:
是否要從 Master Server 複製 Binary Log日誌,必須爲 Yes。
Slave_SQL_Running:
是否要執行從 Master Server複製過來的 Binary Log日誌,必須爲 Yes。
然後在master上添加數據
再在slave server上查詢,發現數據鬥能更新過來,成功。