一、主服务称master,从服务器称slave
主服务器: master
从服务器: slave
主从服务器必须要有相同的mysql配置,版本都需要一致,还需要建立一个一样的数据库。
-
修改主服务my.cnf 配置文件
[root@localhost mysql]# vi /etc/my.cnf #主数据库端ID号 [必须]服务器唯一ID 不能和从服务器id相同 server_id = 1 #开启二进制日志 log-bin = mysql-bin #需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可 binlog-do-db = im # 防止日志文件过大,导致磁盘空间不足,自动清理10天以前的日志文件 expire-logs-days=10
-
修改从服务器my.cnf 配置文件
#从服务器唯一ID [必须]服务器唯一ID,不能和主服务器id相同 server-id=2 #启用中继日志 relay-log=mysql-relay
-
在主服务器上建立帐户并授权slave:
## master_test:账号 ## root123456:密码 ## 从服务器的ip: 127.0.0.1 ## 进入mysql 执行下面命令 grant replication slave on *.* to master_test@127.0.0.1 identified by "root123456"; ## 一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。
-
登录主服务器的mysql,查询master的状态
mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000001 | 16316 | im | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)
File : mysql-bin.000001 Position 16316
这两个值需要在从服务器配置用上提前复制出来备用 -
配置从服务器Slave:
mysql>change master to master_host='主服务器ip',master_user='master_test',master_password='root123456', master_log_file='mysql-bin.000001',master_log_pos=16316;
-
启动从服务器复制功能
start slave;
-
检查从服务器复制功能状态
show slave status\G;
-
这两个值一定要等于Yes 才能同步成功
注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
mysql创建从节点出现如下报错
ERROR 3021 (HY000): This operation cannot be performed with a running slave io thread; run STOP SLAVE IO_THREAD FOR CHANNEL '' first.
原因:
因为之前已经创建过主节点,需停掉之前的配置 再重新配置
执行如下命令
stop slave;
reset master;
start slave;
查询mysql所有用户
select host,user from mysql.user;
红色箭头是主管理员,黄色箭头是mysql系统自带的,不要动它。蓝色箭头是子用户,这个是我以前匹配的,现在删掉,我们重新来。
红色箭头是主管理员,黄色箭头是mysql系统自带的,不要动它。蓝色箭头是子用户,这个是我以前匹配的,现在删掉,我们重新来。
drop user '用户名'@'主机名';
drop user 'wyy'@'192.168.0.105';