進(jìn)入 mysql 創(chuàng)建用戶
CREATE USER 'slave'@'%' IDENTIFIED BY 'flzx3qc1001'
查看用戶信息
select * from mysql.user where user='slave' \G
設(shè)置權(quán)限
GRANT SELECT,REPLICATION SLAVE ON *.* TO 'slave'@'%';
查權(quán)限是否設(shè)置成功
select * from mysql.user where user='slave' \G
復(fù)制兩個(gè)虛擬機(jī)
因?yàn)槲沂窃谔摂M機(jī)操作 所以只要復(fù)制就可以
同源策略,將主庫的庫文件復(fù)制到從庫
注意,先要停止Mysql服務(wù),主庫從庫都要停止。
service mysql stop
庫位置/var/lib/mysql,mysql文件夾就是這個(gè)所有的庫,需要把這個(gè)文件夾復(fù)制到從庫?,F(xiàn)將這個(gè)文件進(jìn)行壓縮。
tar -zcvf mysql.tar.gz ./mysql/
首先進(jìn)入從庫,查看從庫是否有了這個(gè)壓縮文件,并進(jìn)行移動到從庫的/var/lib/
cd /tmp/
mv mysql.tar.gz /var/lib/
將從庫mysql文件夾進(jìn)行備份,以防失敗。
cd /var/lib/
mv mysql mysql.bak
將主庫傳過來的mysql.tar.gz 解壓,這就完成了同源策略
tar -zxvf mysql.tar.gz
這時(shí),就可以主從就都可以開啟mysql服務(wù)了。
service mysql start
配置主庫和從庫
主庫配置/etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
binlog-ignore-db=mysql //不進(jìn)行主從復(fù)制的庫
# 將bind-address注釋,為了能夠使用從庫服務(wù)器IP登陸主庫
#bind-address = 127.0.0.1
從庫配置/etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
server-id = 2
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
binlog-ignore-db=mysql
修改完后重啟數(shù)據(jù)庫
service mysql restart
查詢主數(shù)據(jù)庫狀態(tài)
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 154 | | mysql | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
** 如果為空說明 數(shù)據(jù)庫沒重啟。。 **
從庫執(zhí)行命令
CHANGE MASTER TO
MASTER_HOST='192.168.20.14',
MASTER_USER='slave',
MASTER_PASSWORD='flzx3qc1001',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
//CHANGE MASTER TO MASTER_HOST='192.168.20.14', MASTER_USER='slave', MASTER_PASSWORD='flzx3qc1001', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;
參數(shù)解析
MASTER_HOST:主服務(wù)器IP
MASTER_USER:在主服務(wù)器中創(chuàng)建的帳號,slave
MASTER_PASSWORD:自己定義的密碼, flzx3qc1001
MASTER_LOG_FILE:上一步查看的 主服務(wù)器的FILE文件,mysql-bin.000001
MASTER_LOG_POS:上一步查看的 主服務(wù)器的Postion位置,筆者是154
開始同步 從服務(wù)器執(zhí)行
START SLAVE;
停止復(fù)制
STOP SLAVE;
查看狀態(tài)
SHOW SLAVE STATUS \G
發(fā)現(xiàn)有一個(gè)錯誤
Last_IO_Errno: 1593
Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
意思是 主的UUID 和 從的UUID 不可以一樣, 就是復(fù)制虛擬機(jī)的原因。。。
刪除 從服務(wù)器的 UUID配置
文件地址 /var/lib/mysql/auto.cnf
# 切換目錄
cd /var/lib/mysql
# 重命名
mv auto.cnf auto.cnf.back
# 重啟服務(wù)
service mysql restart
# 進(jìn)入mysql 后 查看狀態(tài)
SHOW SLAVE STATUS \G
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400