mysql主从复制同步
主master : 192.168.8.10
- 開啟二進(jìn)制日志
- 配置唯一的server-id
- 獲得master二進(jìn)制日志文件名及位置
- 創(chuàng)建一個(gè)用于slave和master通信的用戶賬號(hào)
從slave : 192.168.8.11
- 配置唯一的server-id
- 使用master分配的用戶賬號(hào)讀取master二進(jìn)制日志
- 啟用slave服務(wù)
1、配置主庫:
1)、授權(quán)給從數(shù)據(jù)庫服務(wù)器
mysql>GRANT REPLICATION SLAVE ON *.* to 'slave'@'192.168.8.11' identified by 'b5HMLIWQSdT630Dp';
mysql>FLUSH PRIVILEGES;
## 查看MySQL現(xiàn)在有哪些用戶及對(duì)應(yīng)的IP權(quán)限
mysql> select user,host from mysql.user;
2)、修改主庫配置文件,開啟binlog,并設(shè)置server-id,每次修改配置文件后都要重啟mysql服務(wù)才會(huì)生效
在該配置文件[mysqld]下面添加下面內(nèi)容:
[mysqld]
log-bin=/var/lib/mysql/binlog
server-id=1
binlog-do-db = cmdb
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server-id:master端的ID號(hào);
log-bin:同步的日志路徑及文件名,一定注意這個(gè)目錄要是mysql有權(quán)限寫入的(我這里是偷懶了,直接放在了下面那個(gè)datadir下面);
binlog-do-db:要同步的數(shù)據(jù)庫名
還可以顯示 設(shè)置不同步的數(shù)據(jù)庫:
binlog-ignore-db = mysql 不同步mysql庫和test庫
binlog-ignore-db = test
3)、查看主服務(wù)器當(dāng)前二進(jìn)制日志名和偏移量,這個(gè)操作的目的是為了在從數(shù)據(jù)庫啟動(dòng)后,從這個(gè)點(diǎn)開始進(jìn)行數(shù)據(jù)的恢復(fù)
mysql> show master status;
+-------------------+-----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+-----------+--------------+------------------+-------------------+
| mysqld-bin.000121 | 514780853 | | | |
+-------------------+-----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
2、配置從庫
1)、理所當(dāng)然也是從配置文件著手,在/etc/my.cnf 添加下面配置:
[mysqld]
server-id=2 ?//必須是唯一的
重啟時(shí)報(bào)錯(cuò):mysqld: unknown variable ‘master-host=
說明mysql不認(rèn)識(shí)這些變量,網(wǎng)上搜羅了一番,原因是mysql5.5+版本主從復(fù)制不支持這些變量,需要在從庫上用命令來設(shè)置:
mysql> CHANGE MASTER TO MASTER_HOST='192.168.8.10',
MASTER_PORT=3306,
MASTER_USER='slave',
MASTER_PASSWORD='b5HMLIWQSdT630Dp',
MASTER_LOG_FILE='mysql-bin.000071',
MASTER_LOG_POS=120; #后面兩個(gè)參數(shù)的值與主庫保持一致
MASTER_CONNECT_RETRY=10;
mysql> CHANGE MASTER TO MASTER_HOST='111.230.144.106',
-> MASTER_PORT=3306,
-> MASTER_USER='slave2',
-> MASTER_PASSWORD='b5HMLIWQSdT630Dp',
-> MASTER_LOG_FILE='mysqld-bin.000121',
-> MASTER_LOG_POS=514780853,
-> MASTER_CONNECT_RETRY=10;
2)、啟動(dòng)slave進(jìn)程
mysql> start slave;
錯(cuò)誤error 1872
執(zhí)行重置
reset slave;
Query OK, 0 rows affected (0.04 sec)
3)、查看slave的狀態(tài),
show slave status;
如果下面兩項(xiàng)值為YES,則表示配置正確:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
從庫正在等待主庫更新數(shù)據(jù)。。。Waitin for master to send event...
三、同步主庫已有數(shù)據(jù)到從庫
主庫操作:
1、停止主庫的數(shù)據(jù)更新操作
mysql>flush tables with read lock;
2、新開終端,生成主數(shù)據(jù)庫的備份(導(dǎo)出數(shù)據(jù)庫)
[root@zhoujietest ~]# mysqldump -uroot -ptest123 cmdb > cmdb.sql
3、將備份文件傳到從庫
[root@zhoujietest ~]# scp cmdb.sql root@192.168.8.11:/root/
4、主庫解鎖
mysql>unlock tables;
然后在主服務(wù)器上查詢當(dāng)前二進(jìn)制文件的文件名及偏移位置:
mysql > show master status;
然后停止主服務(wù)器上的MySQL服務(wù):
shell> mysqladmin -u root shutdown
從庫操作:
1、停止從庫slave
mysql>slave stop;
2、新建數(shù)據(jù)庫cmdb
mysql> create database cmdb default charset utf8;
3、導(dǎo)入數(shù)據(jù)
[root@ops-dev ~]# mysql -uroot -ptest123 cmdb<cmdb.sql
4、查看從庫已有該數(shù)據(jù)庫和數(shù)據(jù)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| cmdb |
| mysql |
| performance_schema |
| test |
+--------------------+
此時(shí)主從庫的數(shù)據(jù)完全一致,如果對(duì)主庫進(jìn)行增刪改操作,從庫會(huì)自動(dòng)同步進(jìn)行操作。
轉(zhuǎn)載于:https://www.cnblogs.com/Christine-ting/p/10481805.html
總結(jié)
以上是生活随笔為你收集整理的mysql主从复制同步的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 洛谷 P3455BZOJ1101 【[P
- 下一篇: Spring Boot后端+Vue前端+