https://www.cnblogs.com/zgx/archive/2011/09/13/2174823.htmlhtml
一、準備好3臺虛機,一臺master,兩臺slave且都安裝好mysqlmysql
二、主服務器上登陸mysql,建立要同步的庫及表sql
mysql> mysql -uroot -p111111; mysql> CREATE DATABASE NAME; mysql> use NAME; mysql> CREATE TABLE T_NAME(id int,name varchar(20))數據庫
三、主服務器新建用戶並賦予「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;ide
其中:X.X.X.X 爲從服務器的ip地址 例如 192.168.50.% 表示該網段下的從服務器測試
*.* 爲當前服務器全部庫全部表rest
with grant option 爲表示該用戶能夠將本身擁有的權限受權給別人server
mslave 爲可設置的新用戶名htm
password 爲可設置的密碼
flush privileges 命令本質上的做用是將當前user和privilige表中的用戶信息/權限設置從mysql庫(MySQL數據庫的內置庫)中提取到內存裏。MySQL用戶數據和權限有修改後,但願在"不重啓MySQL服務"的狀況下直接生效,那麼就須要執行這個命令。一般是在修改ROOT賬號的設置後,怕重啓後沒法再登陸進來,那麼直接flush以後就能夠看權限設置是否生效。而沒必要冒太大風險。
四、備份數據庫
退出mysql執行備份
mysqldump -uroot -p111111 -B hac>hac.sql
五、遠程拷貝到從服務器中
scp 要拷貝的文件 遠程服務器ip:/遠程目錄
例子:scp hac.sql 192.168.50.131:/root
六、修改master服務器上的配置文件(/etc/my.cnf)
log-bin=mysql-bin-master //啓用主服務器的二進制的名稱 server-id=1 //不能重複 binlog-do-db=要同步的數據庫 //同步多個就寫多條 binlog-ignore-db=mysql //不一樣步的數據庫
七、重啓mysql
systemctl restart mysqld
八、從服務器-導入mysql腳本
mysql -uroot -p111111 <hac.sql
九、從服務器-測試腳本導入是否成功
mysql -uroot -p111111 -e "show databases"
十、從服務器 - 配置etc/my.cnf文件
server-id =2
十一、從服務器-重啓mysql
systemctl restart mysqld
十二、查看master狀態
mysql> show master status;
1三、從服務器嘗試鏈接主服務器(注意防火牆關閉)
mysql -umslave -p111111 -h 192.168.50.130
1四、查看定義的二進制同步文件
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
1五、從服務器-關掉
stop slave;
1六、從服務器-配置主服務器
change master to master_host='192.168.50.130',master_user='mslave',master_password='1111111';
1七、從服務器-啓動
start slave;
1八、從服務器-檢查主從是否配置成功
show slave status \G
Q:配置好後未同步
A:檢查是否開啓同步
mysql> set sql_log_bin=on;