我們在做web系統部署的時候往往涉及到兩台甚至多台數據庫的備份,為了數據安全考慮(雖然說到底不過是一堆0 1,但是價值千金啊),所以我們還是乖乖做同步把!
1、准備兩台Linux服務器(主、從)
2、安裝好Mysql
3、在配置文件/etc/my.cnf(MySQL中為mysql.ini)修改開啟二進制日志
log-bin=mysql-bin 修改方法:打開配置文件后在 [mysqld]中添加內容: server-id = 1 #確保在整個MySQL集群中唯一 log-bin=/var/log/mysql/mysql-bin.log #日志存放位置 log-bin-index = binlog.index
4、重啟mysql服務
service mysql restart
5、查看配置是否正常
show variables like 'log-bin';
6.開始主從復制
第一步:在主服務器中創建一個從服務器中可以登陸的MySQL用戶
mysql>GRANT REPLICATION SLAVE ON *.*TO '用戶名'@'從服務器ip' IDENTIFIED BY '密碼'; mysql>FLUSH PRIVILEGES;
第二步:查看主服務器MySQL二進制文件名和位置
mysql> SHOW MASTER STATUS;
第三步:告知二進制文件名和位置
在從服務器中執行(注意標點符號,最后才是分號)
mysql > CHANGE MASTER TO >MASTER_HOST='主服務器地址', >MASTER_USER='創建的用戶名', >MASTER_PASSWORD='密碼', >MASTER_LOG_FILE='mysql-bin.000048(根據自己的修改)', >MASTER_LOG_POS=432(自己修改);
完成主從復制;
7、測試主從復制
在從服務器中執行
mysql > START SLAVE; #開啟復制mysql > SHOW SLAVE STATUS\G; #查看主從復制是否成功
當看到Slave_IO_Running: YES、Slave_SQL_Running:
YES才表明狀態正常
8、實際測試:
登陸主服務器主MySQL:show database;
登陸從服務器MySQL:show databases;
主數據庫進行如下操作:
(1)創建數據庫和表
create database test; use test; create table tab1(id int auto_increment,name varchar(10),primary key(id)); show databases; show tables;
(2)從數據庫也查看數據庫和表,看數據是否同步了
9、出錯請看
問題一:mysql服務器啟動不了
出錯:Starting MySQL... ERROR! The server quit without updating PID file
解決辦法:找到mysql安裝目錄下面的data目錄,刪除mysql-relay-log.index
問題二:不能同步
進入slave服務器,運行:
mysql > show slave status\G;
.......
解決辦法一:
Slave_SQL_Running: No
1.程序可能在slave上進行了寫操作
2.也可能是slave機器重起后,事務回滾造成的.
一般是事務回滾造成的:
解決辦法二:
mysql > stop slave; mysql > set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; mysql > start slava;
注意:如果實在不行就在從服務器里邊執行如下操作
mysql > stop slave; >reset slave; > 重新配置同步(見第六步) >start slave;
至此數據庫同步完成!
當你發現自己的才華撐不起野心時,就請安靜下來學習吧!