MySQL主庫已經存在的基礎上搭建從庫的過程-- (舊資料整理)
【備註】:
主機192.168.250.20
備機192.168.250.40
主從複製
1 主機上面已經有了MySQL5.1.53-log版.
2 備機上沒有mysql資料庫,需要在備機上安裝MySQL5.1.53-log軟體,具體參考svn文件“system\mysql\document\IT_SYS_MySQL_Installation.docx”。
3 再次確定主伺服器與從伺服器的MySQL版本一致
Showvariables like 'version';
4 在主伺服器上位伺服器設定一個連線賬號,賦予replication slave許可權。
MySQL> grant replication slave, super,reload on *.* to 'rel'@'192.168.250.40 identified by'slavepwd1229';
5 確保主伺服器上的my.cnf檔案的[mysqld]部分包括一個log-bin選項。如下:
[mysqld]
………
log-bin=mysql-bin
server-id=1
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
6 確保從伺服器,確保在my.cnf檔案中新增以下的行:
[mysqld]
log-bin=mysql-bin
server-id=2
log_slave_updates = 1
read_only=1 # 這個引數表示只有supser
relay-log=relay-bin
relay-log-index=relay-bin
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
log_bin_trust_function_creators = 1
7 主伺服器重啟(如果配置了master服務也可以不重啟),從伺服器重啟
n 主伺服器已經執行很長時間,binlog不是從0001開始。
8 在主伺服器上檢視master狀態
mysql> show master status;
+------------------+-----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+-----------+--------------+------------------+
| mysql-bin.000075 | 875653787 | | |
+------------------+-----------+--------------+------------------+
1 row in set (0.00 sec)
9 啟動從伺服器,設定複製斷點
先從250.20上面copy資料檔案到250.40上面,然後chown資料許可權,最後重新整理表
Mysql> flush tables;
從102上面匯入所有的儲存過程以及儲存函式:
/usr/local/mysql/bin/mysqldump -h192.168.250.20-uroot -pguNNhtqhjUnfky6ahyVh -ntd -R csf_maec > /tmp/cm20101230.sql;
/usr/local/mysql/bin/mysqldump -hlocalhost-uroot -pguNNhtqhjUnfky6ahyVh -ntd -R csf > /tmp/csf20101230.sql;
/usr/local/mysql/bin/mysqldump -hlocalhost-uroot -pguNNhtqhjUnfky6ahyVh -ntd -R csf_pub > /tmp/csf_pub20101230.sql;
/usr/local/mysql/bin/mysqldump -hlocalhost-uroot -pguNNhtqhjUnfky6ahyVh -ntd -R reuters_interface >/tmp/reuers_inter20101230.sql;
Mysql> change master tomaster_user='rel',
master_password=' slavepd1012301151' ,
master_host='192.168.250.20’,
master_log_file='mysql-bin.000075',
master_log_pos=875653787;
mysql> start slave;
mysql> show slave status \G;
10 如果複製狀態Slave_IO_Running,Slave_SQL_Running都為Yes,說明覆制已經配置正確,如下:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Ok,下面insert、delete、update、drop、truncate等等都測試成功。
意外1:
主機停機,備機正常:主機重啟之後,備機仍然可以正常進行復制同步。
意外2:
主機不停機,備機停機:備機重啟後,備機開啟手工複製功能如下:
Mysql> start slave;
意外3:
主機停機,備機停機:
(1) 先開啟slave,啟動mysql,進入mysql
Mysql> stop slave;
Mysql> show slave status \G;記下最後一個pos與binlog值為mysql-bin.000079、875653787
(2) 重新指定master目標:
Mysql> change master tomaster_user='rel',
master_password=' slavepd1012301151' ,
master_host='192.168.250.20,
master_log_file='mysql-bin.000079',
master_log_pos=875653787;
(3) 啟動master
(4) 進入slave,啟動複製功能。執行start slave;
Mysql> start slave;