https://www.cnblogs.com/zgx/archive/2011/09/13/2174823.html
1、准備好3台虛機,一台master,兩台slave且都安裝好mysql
2、主服務器上登錄mysql,創建要同步的庫及表
mysql> mysql -uroot -p111111; mysql> CREATE DATABASE NAME; mysql> use NAME; mysql> CREATE TABLE T_NAME(id int,name varchar(20))
3、主服務器新建用戶並賦予“REPLICATION SLAVE”的權限(注:mysql8.0版本分三步執行)
mysql> create user 'mslave'@'X.X.X.X' identified by 'password' mysql> grant all privileges on *.* to 'mslave'@'X.X.X.X' with grant option; ( grant 權限列表 on 數據庫 to 用戶名@訪問主機) mysql> flush privileges;
其中:X.X.X.X 為從服務器的ip地址 例如 192.168.50.% 表示該網段下的從服務器
*.* 為當前服務器所有庫所有表
with grant option 為表示該用戶可以將自己擁有的權限授權給別人
mslave 為可設置的新用戶名
password 為可設置的密碼
flush privileges 命令本質上的作用是將當前user和privilige表中的用戶信息/權限設置從mysql庫(MySQL數據庫的內置庫)中提取到內存里。MySQL用戶數據和權限有修改后,希望在"不重啟MySQL服務"的情況下直接生效,那么就需要執行這個命令。通常是在修改ROOT帳號的設置后,怕重啟后無法再登錄進來,那么直接flush之后就可以看權限設置是否生效。而不必冒太大風險。
4、備份數據庫
退出mysql執行備份
mysqldump -uroot -p111111 -B hac>hac.sql
5、遠程拷貝到從服務器中
scp 要拷貝的文件 遠程服務器ip:/遠程目錄
例子:scp hac.sql 192.168.50.131:/root
6、修改master服務器上的配置文件(/etc/my.cnf)
log-bin=mysql-bin-master //啟用主服務器的二進制的名稱 server-id=1 //不能重復 binlog-do-db=要同步的數據庫 //同步多個就寫多條 binlog-ignore-db=mysql //不同步的數據庫
7、重啟mysql
systemctl restart mysqld
8、從服務器-導入mysql腳本
mysql -uroot -p111111 <hac.sql
9、從服務器-測試腳本導入是否成功
mysql -uroot -p111111 -e "show databases"
10、從服務器 - 配置etc/my.cnf文件
server-id =2
11、從服務器-重啟mysql
systemctl restart mysqld
12、查看master狀態
mysql> show master status;
13、從服務器嘗試連接主服務器(注意防火牆關閉)
mysql -umslave -p111111 -h 192.168.50.130
14、查看定義的二進制同步文件
ll /var/lib/mysql -rw-r-----. 1 mysql mysql 155 Aug 15 03:30 mysql-bin-master.000001 -rw-r-----. 1 mysql mysql 26 Aug 15 03:30 mysql-bin-master.index
mysql查看二進制文件的記錄
show binlog events \G
15、從服務器-關掉
stop slave;
16、從服務器-配置主服務器
change master to master_host='192.168.50.130',master_user='mslave',master_password='1111111';
17、從服務器-啟動
start slave;
18、從服務器-檢查主從是否配置成功
show slave status \G
Q:配置好后未同步
A:檢查是否開啟同步
mysql> set sql_log_bin=on;