一、安裝好mysql,並能成功啓動
二、配置新數據庫的主從複製
1、修改主庫配置文件 注意!注意!注意!:配置文件一定要保存成ASNI存儲方式,不然會報錯
vim /etc/my.cnf
#主服務器唯一ID
server-id=1
#啓用二進制日誌
log-bin=mysql-bin
# 設置不要複製的數據庫(可設置多個)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#設置需要複製的數據庫
binlog-do-db=mycatdb #需要複製的主數據庫名字
#設置logbin格式
binlog_format=STATEMENT
2、修改從庫配置文件
vim /etc/my.cnf
#從服務器唯一ID
server-id=2
#啓用中繼日誌
relay-log=mysql-relay
log-bin=mysql-bin #從庫會基於此log-bin來做複製
replicate-do-db=mycatdb #用於讀寫分離的具體數據庫
#設置logbin格式
binlog_format=STATEMENT
3、配置主數據庫
開啓主數據庫服務,創建用來測試讀寫分離的數據庫
對用戶授權使其用於複製主庫數據
注意:下面的語句要用root來執行
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';#創建用戶
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.103.%';#授權
或者
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';#授權
flush privileges;
#我這裏用 GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identitied by '123456'; ,就是加上密碼授權是報錯。
然後查詢主數據庫狀態,並記錄下File和Position字段的值
mysql> show master status;
+------------------+----------+--------------+--------------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+--------------------------+-------------------+
| mysql-bin.000002 | 155 | mycatdb | mysql,information_schema | |
+------------------+----------+--------------+--------------------------+-------------------+
1 row in set (0.00 sec)
4、
配置從數據庫
開啓從數據庫服務,手動創建測試讀寫分離的庫,這邊不會幫你自動創建,同時也創建和主庫一樣的用戶,我這裏還是先停止從庫
stop slave;
設置它的master
change master to master_host='192.168.232.124',
master_port=3306,
master_user='slave',
master_password='123456',
master_log_file='mysql-bin.000002',
master_log_pos=155;
注:這裏的 master_log_file和master_log_pos就是配置主數據庫查詢到的File和Position
啓動從庫
start slave;
檢查是否啓動成功
show slave status\G;
#下面兩個參數都是Yes,則說明主從配置成功!
# Slave_IO_Running: Yes
# Slave_SQL_Running: Yes
到這裏,已經配置好主從同步了。
在主庫建表、插入數據,然後在從庫查詢
---------------------------------------------------------------------------------------
如何停止從服務複製功能
stop slave;
如何重新配置主從
stop slave;
reset master;
---------------------------------------------------------------------------------------
我這裏啓動從庫的時候報了個錯誤:
The slave I/O thread stops because master and slave have equal MySQL server UUIDs
原因是我的這臺虛擬機是複製過來的,auto.cnf中的server-uuid是一樣的。
解決方法:停止從庫的mysqld服務,刪除他的auto.cnf文件,再啓動數據庫服務即可:
find / -name auto.cnf
# /var/lib/mysql/auto.cnf
rm auto.cnf
# rm:是否刪除普通文件 "auto.cnf"?y
systemctl start mysqld
systemctl status mysqld
use mysql
start slave;
show slave status\G;