这边的用户 '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