學習連接html
Mysql的主從同步(新數據庫)
數據庫同步複製功能的設置都是在mysql的配置文件(liunx 下是爲/etc/my.cnf)中體現的。主要工做原理爲slave端記錄而且執行master端的操做日誌。
分別登陸master機和slave機的mysql:mysql –u root –p
建立數據庫:create database repl;
一、設置同步master
編輯配置文件 /etc/my.cnf 確保有以下行
server-id=1
binlog-do-db=repl //須要備份的數據庫名,若是須要備份多個數據庫,重複設置這個選項便可。
log-bin=mysql-bin //啓動二進制日誌系統
如下的幾個參數能夠不加:
log-err=my-err.log
log-bin=mysql-bin //啓動二進制日誌系統
binlog-ignore-db=mysql //不須要備份的數據庫名,防止備份出錯,能夠把不備份的數據庫寫入這個參數中
log-slave-updates //這個參數是把更新的記錄寫到二進制文件中
slave-skip-errors //跳過錯誤,繼續執行復制操做
二、建立一個mysql的帳號爲同步專用
mysql –u root –p
mysql> grant replication slave on *.* to 'gl'@'192.168.10.Slave' identified by '123456';
#grant replication slave on *.* to ‘用戶名’@'主機’ identified by ‘密碼’;
mysql> flush privileges; #刷新權限
重啓master mysql
查看master狀態
mysql>show master status;
查看進程:
mysql> show processlist;
三、設置同步slave
編輯配置文件
server-id=2
master-user=gl //同步帳號
master-host=192.168.10.master //同步masterIP
master-password=123456 //同步密碼
master-connect-retry=60 //心跳時間(庫同步間隔)
master-port=3306 //master數據庫的端口
replicate-do-db=repl //同步的數據庫名
而後重啓slave mysql
在slave機中進入mysql
mysql>start slave;
mysql>show slave status\G;
若是Slave_IO_Running、Slave_SQL_Running狀態爲Yes則代表設置成功。
查看slave狀態
mysql>show master status;
查看進程:
mysql> show processlist;
我在第一次配的時候出現錯誤,查看日誌爲
error got fatal error:1236 binary log is not open from master where reading data from binary log
後來查找後知道爲沒有設置log-bin
即在master中my.cnf中設置log-bin=mysql-bin //啓動二進制日誌系統
mysql的主從同步(數據庫已經運行一段時間)
一、設置同步master #同上
二、建立一個mysql帳號爲同步帳號 #同上
三、給主服務器全部表加鎖,禁止繼續寫入數據
mysql>FLUSH TABLES WITH READ LOCK;
mysql> show master status; ???? ???????? //記錄複製啓動斷點,也可使用 show master status\G
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 106 | backup | |
+------------------+----------+--------------+------------------+
//記錄File: mysql-bin.000003 偏移量 Position 106
四、打包備份主服務器數據文件
cd /var/lib/mysql
tat –cvf repl.tar repl //打包須要備份的數據庫
scp repl.tar 192.168.10.204:/var/lib/mysql? //將打包後的數據庫傳到備份服務器
五、主服務器表解鎖
執行如下命令,解開主服務器的讀鎖,主服務器能夠繼續更新數據:
mysql> UNLOCK TABLES;
六、設置同步slave //同上3
七、在從服務器上恢復主備份文件
cd /var/lib/mysql
tar –xvf repl.tar
八、在從服務器mysql命令符下實現同步
如果查看不能正常同步時,需進行以下操做:
mysql> slave stop;mysql> change master to
mysql> master_host='10.10.0.244',
mysql> master_user='backup',
mysql> master_password='123456',
mysql> master_log_file='mysql-bin.000003', //主服務上的file
mysql> master_log_pos=106; //主服務器上的pos
mysql> slave start;
用show slave status\G;看一下從服務器的同步狀況
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
若是都是yes,那表明已經在同步
往表裏面寫點數據測試一下看是否同步成功。
mysql的雙向同步
配置雙向同步方法就是在單向同步的基礎上略加改動,即在從機上作主機配置,在主機上作從機配置。
在master上作從機配置
在配置文件中添加
master-host=192.168.10.204
master-user=gl
master-password=12345678
master-port=3306
master-connect-retry=60
replicate-do-db=repl
#service mysql restart 重啓mysql
在slave上作主機配置
在配置文件中添加
binlog-do-db=repl
log_err=my-err.log
建立同步帳號
mysql> grant replication slave on *.* to 'gl'@'192.168.10.237' identified by '12345678';
mysql> flush privileges;
在master上測試同步帳號 mysql -h 192.168.10.204 -u gl -p
查看同步狀態
在master上查看
mysql> slave stop;
mysql> slave start;
ERROR 1200 (HY000): The server is not configured as slave; fix in config file or with CHANGE MASTER TO
mysql> show slave status;
Empty set (0.00 sec)
此時master上slave不能啓動,須要進行以下操做
查看slave上的master狀態
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 106 | backup | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
在master上添加 change master to
mysql> change master to master_host='10.10.0.247', master_user='backup', master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=106;
Query OK, 0 rows affected (0.02 sec)
mysql> slave start;
Query OK, 0 rows affected (0.00 sec)
查看master的 slave狀態
Slave_IO_Running: Yes Slave_SQL_Running: Yes //此時正常
(出現error 1200的錯誤也可修改數據庫下的master.info文件
/usr/local/mysql/data # vim master.info
15
mysql-bin.000004 //master_log_file
204 //master_log_pos
10.10.0.247 //master_host
Backup //master_user
123456 //master_password
3306 //master-port
60 master_connect_retry
0 ) mysql