折騰一天,只因爲網上講的少了要開啓mysql遠程鏈接權限(mysql默認禁止遠程鏈接,如navicat等軟件的連接)。
主從複製的作用是做冗餘備份,而且主從做讀寫分離的話 往往從庫會有好幾臺 分擔了壓力 並且可以直接做負載均衡。
實驗環境
- 兩臺服務器做配置測試:虛擬機中的ubuntu(192.168.128.131)和宿主機xp(192.168.128.1)
- 分別安裝有mysql。最好版本一樣(我的不一樣)
- 機子都ping得通
主服務器配置(ubuntu)
配置mysql
#vi /etc/mysql/my.cnf
[mysqld]
log-bin=mysql-bin #[必須]啓用二進制日誌
server-id=1 #[必須]服務器唯一ID,默認是1,一般取IP最後一段
檢查mysql是否允許遠程連接
bind-address = 0.0.0.0 #這樣表示允許所有網段連接
進入mysql終端
#mysql -uroot -proot
新建mysql用戶(從服務器用到此賬號配置)backup
mysql> GRANT REPLICATION backup ON *.* to 'backup'@'192.168.128.%' identified by 'backup';
刷新一下權限表
mysql> flush privileges;
重啓mysql
#service mysql restart
進入mysql終端查看master狀態
mysql> show master status;
記錄file 和 position的值,從服務器配置用到。這個時候不要去動主數據庫,會影響position的值。
從服務器配置(xp)
配置mysql的my.ini並重啓
[mysqld]
log-bin=mysql-bin #[可選]啓用二進制日誌
server-id=2
登錄mysql終端後執行
mysql> change master to master_host='192.168.128.131',
master_user='backup',
master_password='backup',
master_log_file='mysql-bin.000002',
master_log_pos=612;
啓動slave從庫
mysql> start slave;
查看slave從庫
mysql> show slave status\G;
Slave_IO_Running和Slave_SQL_Running必須都爲Yes纔算成功。
測試
ubuntu mysql
mysql> create database test_repl;
然後查看xp mysql如果出現test_repl庫則說明主從複製配置成功
mysql> show databases;
結尾
這只是最基本的配置,還有很多配置命令就不折騰了。測試時發現之前庫不一致時我在主庫裏面添加一張表,而從庫沒有那個庫,導致從庫slave會報錯,執行這個命令後重啓從庫就可以跳過這個錯誤。
#SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 跳過一個事務