mysql 主从备份 主服务器配置_同一服务器配置Mysql主从备份
因為是在同一服務器上配置并且沒有使用虛擬機,所以在網上找資料是找到的寫的不全,寫的好的又沒百度到,你說配置難么其實也跟學自行車一樣!
準備環境
Windows10
主庫?Mysql?5.6.21
從庫 Mysql?5.6.28
一般情況從庫是要比主庫版本高的,因為考慮到mysql版本向后兼容性!
安裝
首先要在本地建立兩個mysql服務(參考這里),指定不同的端口。我這里一個主(3306),一個從(3309)。
配置文件
一般是把配置參數[mysqld]放在這個下面,有博客說要不容易出錯
注:
可以用參數指定只復制一張表,如:#只復制某個表replicate-do-table=tablename#只復制某些表(可用匹配符)replicate-wild-do-table=tablename%#只復制某個庫replicate-do-db=dbname#只復制某些庫replicte-wild-do-db=dbname%#不復制某個表replicate-ignore-table=tablename
主庫配置:
[mysqld]
server-id = 1
binlog-do-db=test #要同步的數據庫
#binlog-ignore-db=mysql ? #不同步的數據庫,如果指定了binlog-do-db這里應該可以不用指定的
log-bin=mysql-bin #要生成的二進制日記文件名稱
從庫配置
[mysqld]
server-id = 2
log-bin????= mysql-bin
replicate-do-db=test
以上兩步配置完成重啟,主庫和從庫
配置賬戶
1.在主庫添加一個用戶 repl 并指定replication權限
create user 'repl'@'127.0.0.1' identified by 'asdf';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'127.0.0.1'; ? ? -- 這里我指定數據庫(test.*)時報錯,而指定全庫(*.*)時會成功。
2.保持主從mysql的test數據庫初始狀態一致。
一般是先將所有的表加讀鎖,然后copy磁盤上的數據庫文件夾。我這里直接停止服務,然后將數據文件拷貝過去。
在主數據庫里面運行show master status;記下file和position字段對應的參數。
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 107 | test | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
3.在從庫設置它的master:
mysql> change master to master_host='127.0.0.1',master_port=3306,master_user='repl',master_password='asdf',master_log_file='mysql-bin.000001',master_log_pos=107;
Query OK, 0 rows affected (0.19 sec)
這里的master_log_file和master_log_pos對應剛才show master status記下的參數。
4.在從庫開啟從數據庫復制功能。
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
在從庫可以通過show slave status來查看一些參數。
測試
此時在主庫創建表或插入數據,在從庫就會很快也能看到了。
注:要指定好數據庫,use 數據庫名;
-- 主庫
mysql> create table tianyc_02(b int);
Query OK, 0 rows affected (0.16 sec)
mysql> insert into tianyc_02 values(2013);
Query OK, 1 row affected (0.13 sec)
-- 從庫
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| tianyc_01 |
| tianyc_02 |
+----------------+
2 rows in set (0.00 sec)
mysql> select * from tianyc_02;
+------+
| b |
+------+
| 2013 |
+------+
1 row in set (0.00 sec)
同理,可以搭建第二、第三個從節點。
大部分轉載于此:http://www.cnblogs.com/yuechaotian/archive/2013/05/15/3080056.html
備注:兩個服務的serve_id必須不同,否則在開啟復制功能時會提示錯誤
mysql> start slave;
ERROR 1200 (HY000): The server is not configured as slave; fix in config file or with CHANGE MASTER TO
我這里設置的主節點id為1,從節點id為2。也可以按照ip或端口進行設置,好用來區分。參考這里。
想法:
按照現在配置好之后。
備庫關閉了(stop slave) ,這時候主庫有數據寫入,等到下次備庫開啟(start slave)主庫寫入的數據也會同步到備庫上。
如果在備庫上A表寫入一條數據,之后主庫A表寫入一條和備庫不同的數據,造成的結果就是,主庫A表這一條數據是沒有寫入到備庫的。緊接著主庫再添加一條數據,這條數據會同步到備庫!
主庫的刪除修改不會影響備庫!
錯誤問題:
原因:檢查my.cnf,原來沒指定relay_log,mysql默認產生的relay_log名被該server上的另一個mysql slave占用了。
[ERROR] Slave SQL: Slave failed to initialize relay log info structure from the repository, Error_code: 1872
mysql>reset slave
然后接著往下執行就可以了。
總結
以上是生活随笔為你收集整理的mysql 主从备份 主服务器配置_同一服务器配置Mysql主从备份的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java递归老鼠走迷宫_递归算法求老鼠走
- 下一篇: php mysql 地理位置_PHP M