這邊的用戶 'slave_mysql'@'192.168.%'
指的是隻容許 ip
以 192.168.
開頭的遠程主機進行鏈接(本地測試用的),新手建議是設置爲 'slave_mysql'@'%'
。注意數據庫通配符的使用。mysql
mysql -u root -p mysql> grant replication slave on *.* to 'slave_mysql'@'192.168%' identified by '123456';
[mysql]
是針對數據庫客戶端的配置sql
[mysqld]
是針對數據庫服務器的配置數據庫
[mysqld] # 設置服務器ID,從服務器ID必須大於主服務器ID server_id=1 # 啓動 mysql 的二進制日誌系統 log_bin=bin # 須要同步的數據庫名,若是有多個,則重複此參數,每一個數據庫一行 binlog_do_db=Test # 不一樣步的 mysql 數據庫,同上 binlog_ignore_db=mysql binlog_ignore_db=performance_schema binlog_ignore_db=information_schema binlog_ignore_db=sys ; 從 mysql 8.0.x 引進的,單位:秒 binlog_expire_logs_seconds=2592000 ; 舊版本能夠使用以下命令,單位:天 expire_logs_days=30
[mysqld] server_id=2 log_bin=mysql-bin # 要複製的數據庫 replicate_do_db=Test # 不要複製的數據庫 replicate_ignore_db=mysql replicate_ignore_db=performance_schema replicate_ignore_db=information_schema replicate_ignore_db=sys
show master status;
+------------------+----------+--------------+-------------------------------------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+-------------------------------------------------+-------------------+ | mysql-bin.000006 | 2216 | Test | mysql,performance_schema,information_schema,sys | | +------------------+----------+--------------+-------------------------------------------------+-------------------+ 1 row in set (0.00 sec)
file
、position
、binlog_do_db
三個字段,分別是二進制日誌文件(實現主從複製的文件),從庫開始複製的位置,須要進行同步的數據庫。// 注意 後面是有逗號 在的!! mysql> change master to mysql> master_host='192.168.1.1' , # 遠程主機的IP地址 mysql> master_user='slave_mysql' , # 主庫容許遠程鏈接的用戶(注意不要攜帶 @'%' 這些東西) mysql> master_password='123456' , # 密碼 mysql> master_log_file='mysql-bin.000006' , # 同步的日誌文件 mysql> master_log_pos=2216; # 開始同步的位置
show slave status \G
*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.150.128 Master_User: slave_mysql Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000006 Read_Master_Log_Pos: 2216 Relay_Log_File: grayVTouch-relay-bin.000002 Relay_Log_Pos: 320 Relay_Master_Log_File: mysql-bin.000006 Slave_IO_Running: Yes // 必須爲 yes Slave_SQL_Running: Yes // 必須爲 yes Replicate_Do_DB: Test Replicate_Ignore_DB: ...... 1 row in set (0.00 sec)
Slave_IO_Running
和 Slave_SQL_Runniing
必須爲 yes
,表示開啓成功。use Test; create table if not exists test_master_slave ( id int primary key auto_increment not null , action char(255) , c_time timestamp default current_timestamp );
查看 Test
數據庫有沒有出現 test_master_slave
表。服務器
Slave_IO_Running:connecting
問題從庫沒有訪問主庫的權限,實際就是主庫沒有開啓遠程訪問的帳號。解決方法,主庫新建具備遠程鏈接的帳號,從庫關閉現有的主從複製進程,從新設置 master,而後在開啓主從複製。app
mysql> stop slave;
Slave_IO_Running:no
問題SQL
語句出現錯誤,致使同步進程終止。具體能夠查看從庫錯誤日誌,路徑:/path/to/mysql/data/userAccount.err
文件。userAccount
指的是主庫所在遠程主機的用戶名(猜的)。iphone
主從複製原理ide