關閉selinux iptables
保證從數據服務器上有主數據服務器的庫和表且表結構要與主數據服務器一致
主服務器
授權從服務器
mysql> grant replication slave on *.* to userslave@'192.168.70.132' identified by '123456';
開啓binlog日誌
[root@localhost mysql]# vim /etc/my.cnf log-bin server_id=1 主從服務器必須都要有server_id且servrer_id的值在整個主從架構中不能重複 [root@localhost mysql]# service mysql restart
查看主服務器狀態。file爲從服務器指定時的master_log_file文件,position爲master_log_pos指定值。
mysql> show master status; +----------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +----------------------+----------+--------------+------------------+-------------------+ | localhost-bin.000007 | 120 | | | | +----------------------+----------+--------------+------------------+-------------------+
從服務器
首先測試授權用戶的權限
其次配置my.cnf
[root@localhost mysql]# vim /etc/my.cnf Server_id=2 主從服務器id值不能一樣
最後用自己本機數據庫管理員登陸,指定自己的主服務器。
mysql> change master to -> master_host='192.168.70.129', -> master_user='userslave', -> master_password='123456', -> master_log_file='localhost-bin.000007', -> master_log_pos=120;
做從服務器時多出的文件
localhost-relay-bin.000001 中繼binlog日誌 localhost-relay-bin.index 存放已有的中繼binlog日誌 master.info 主數據庫服務的信息 relay-log.info 中繼日誌信息
查看從服務器狀態
mysql> start slave; //啓動同步 mysql> stop slave; //停止同步 mysql> show slave status\G; Slave_IO_Running: No Slave_SQL_Running: No mysql> start slave; Slave_IO_Running: Yes Slave_SQL_Running: Yes
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
兩個全部爲yes同步成功
mysql主從工作原理
從服務器IO進程:負責連接主服務器。從主的binlog日誌裏拷貝sql語句放到本機的relaybinlog日誌文件裏。relaybinlog:中繼binlog日誌
從服務器的SQL進程:執行本機中繼binlog日誌文件裏sql語句,把數據寫進本機的數據庫裏。
mysql主從同步的結構模式
一主一從
一主多從:(生產中用的比較多)
主從從
主主:互爲主從
主服務器端
binlog-do-db=name 設置master對哪些庫記日誌 binlog-ignore-db=name 設置master對哪些庫不記日誌
從服務器端
replicate-do-db=name 僅複製指定庫,可設置多條 replicate-ignore-db=name 不復制哪些庫 log-slave-updates 記錄從庫更新,允許鏈式複製(主從從) relay-log= 指定中繼日誌文件名 report-host= 報告給master的主機名或IP地址 slave-net-timeout=60 網絡中斷時,重試超時(默認60s)