mysql 主从 设置

总结:
1.如果是虚拟克隆mysql 请注意auto.cnf的uuid保证不一样,即删除auto.cnf 重新启动即可
2.默认安装的mysql配置文件mysqld.cnf可能绑定了127.0.0.1 只允许本地登录,需要注销此句,即开启允许远程访问。
3.当master-slave配置完成以后。如果新增的slave不指定主二进制文件位置,则新节点会全部复制,即默认文件位置为0
4.配置master-slave时,要指定二进制文件的日志索引文件名,这样即使master服务器切换主机名,slave也可复制成功。
5.二进制日志文件内容,是以format事件开始,轮换事件结束。
6.配置master-slave时,要设置master的二进制文件名以及slave的中继日志索引文件名.

操作流程:

安装mysql

修改my.cnf 之后,需要重新启动

1.linux 重新获取ip地址
$>dhclient
2.创建mysql用户
grant replication slave,reload,create user,super on *.* to master@'192.168.2.%' with grant option identified by '密码'

flush privileges;

因为新版的的mysql版本已经将创建账户和赋予权限的方式分开了,因此上面的语句可能会现现提示语法错误。

或者
create user repl_user;
grant replication slave on *.* to repl_user identified by 'xyzzy'
3.设置mysql

找到my.cnf
log-bin = master-bin
log-bin-index = master-bin.index
server-id = 1

配置slave
relay-log = slave-relay-bin
relay-log-index = slave-relay-bin.index
server-id = 2

3.链接复制
master数据库:
flush tables with read lock;
在slave数据库配置完成以后,再执行
unlock tables;

slave数据库:
change master to
master_host='',
master_port='',
master_user='',
master_password='',
master_log_file='',
master_log_pos='';

start slave;

2.监控
show master status G;
show slave status G;

3.其它命令
flush logs;强制轮换一个日志
show binlog events 查看日志事件


4.错误处理
错误1:
ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (111)
my.cnf配置
/etc/mysql/mysql.conf.d/mysqld.cnf
bind-address=127.0.0.1 需要注销 默认是mysql只能本机链接不能远程链接

1、错误消息
mysql> show slave staus;

Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs;
these UUIDs must be different for replication to work.

2、查看主从的server_id变量
master_mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 33 |
+---------------+-------+

slave_mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 11 |
+---------------+-------+
-- 从上面的情形可知,主从mysql已经使用了不同的server_id

3、解决故障
###查看auto.cnf文件
[root@dbsrv1 ~] cat /data/mysqldata/auto.cnf ### 主上的uuid
[auto]
server-uuid=62ee10aa-b1f7-11e4-90ae-080027615026

[root@dbsrv2 ~]# more /data/mysqldata/auto.cnf ###从上的uuid,果然出现了重复,原因是克隆了虚拟机,只改server_id不行
[auto]
server-uuid=62ee10aa-b1f7-11e4-90ae-080027615026

[root@dbsrv2 ~]# mv /data/mysqldata/auto.cnf /data/mysqldata/auto.cnf.bk ###重命名该文件
[root@dbsrv2 ~]# service mysql restart ###重启mysql
Shutting down MySQL.[ OK ]
Starting MySQL.[ OK ]
[root@dbsrv2 ~]# more /data/mysqldata/auto.cnf ###重启后自动生成新的auto.cnf文件,即新的UUID
[auto]
server-uuid=6ac0fdae-b5d7-11e4-a9f3-0800278ce5c9


###再次查看slave的状态已经正常
[root@dbsrv1 ~]# mysql -uroot -pxxx -e "show slave statusG"|grep Running
Warning: Using a password on the command line interface can be insecure.
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
###主库端查看自身的uuid
master_mysql> show variables like 'server_uuid';
+---------------+--------------------------------------+
| Variable_name | Value |
+---------------+--------------------------------------+
| server_uuid | 62ee10aa-b1f7-11e4-90ae-080027615026 |
+---------------+--------------------------------------+
1 row in set (0.00 sec)

###主库端查看从库的uuid
master_mysql> show slave hosts;
+-----------+------+------+-----------+--------------------------------------+
| Server_id | Host | Port | Master_id | Slave_UUID |
+-----------+------+------+-----------+--------------------------------------+
| 33 | | 3306 | 11 | 62ee10aa-b1f7-11e4-90ae-080027615030 |
| 22 | | 3306 | 11 | 6ac0fdae-b5d7-11e4-a9f3-0800278ce5c9 |
+-----------+------+------+-----------+--------------------------------------+

原文地址:https://www.cnblogs.com/liuxm2017/p/9628471.html