Mysql主从数据库配置说明

前言

为了解决高并发情况下数据库CPU高占用情况,而选择使用主从式构,对数据库进行读写分离,提高数据库性能。以下是我进行配置的过程。

准备环境

至少有2台及以上含mysql的系统,可以采用虚拟机的形式
这里使用两台阿里云抢占式服务器(2核4G 8分钱/小时)用来进行测试很方便。

实现原理

程序通过修改主数据库进行,将操作日志记录到Binary Log(二进制日志)中,从服务器通过I/O线程将Binary Log的操作同步到Relay Log中,然后从服务会将Relay Log日志记录在从服务器执行。

实现步骤

1.修改主服务器my.cnf文件

我的Mysql通过apt直接安装的,通过

vim /etc/mysql/my.cnf

找到my.cnf加载了其他文件,顺藤摸瓜找到核心配置文件**[mysqld]**项

vim /etc/mysql/mysql.conf.d/mysqld.cnf

在[mysqld]下插入

server-id=1
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin

在这里插入图片描述

2.重启主服务器

/etc/init.d/mysql restart

or

service mysql restart

3.进入主服务器mysql查看一下配置情况

mysql -u username -p

然后

mysql> SHOW MASTER STATUS;

会出现一个master-bin.00000x的文件
在这里插入图片描述

4.在从服务器上修改my.cnf配置

server-id=2		//这里一定要和主服务不同,需要一主多从需要全不相同
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin

在这里插入图片描述

5.重启从服务器mysql

/etc/init.d/mysql restart

或者

service mysql restart

6.关联主从数据

进入主数据库执行

mysql> create user repl;
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'从服务器ip' IDENTIFIED BY '用户密码';
mysql> flush privileges;

第一句 创建数据用户
第二句 赋予(从服务器ip下,也可以改成%)repl用户 REPLICATION SLAVE的权限, . 表面这个权限是针对主库的所有表的
第三句 配置立即生效

从数据库执行

mysql> change master to master_host='主服务器IP',master_port=3306,master_user='repl',master_password='用户密码',master_log_file='master-bin.000001',master_log_pos=0;

7.启动主从同步

进入从数据库
启动

mysql> stop slave;

停止

mysql> stop slave;

查看状态

show slave status \G;

注意查看图中标出的位置报错信息(如果有的话)。注意查看图中标出的位置报错信息(如果有的话)。

如果遇到

“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.”

  1. 检查my.cnf中server-id的值是否有重复
  1. 如果没有重复检查主从服务器的/var/lib/mysql/auto.cnf文件中的uuid是否有重复
    如果重复时应重命名auto.cnf文件为auth.cnf.bak 然后重启mysql即可

一般就是这两个原因引起的

如果报的是登陆失败,就检查配置用户的密码和权限

8.测试主从结构

在主服务的mysql中创建一个数据库,然后就可以在从数据库中找到。

mysql> create database test001;

猜你喜欢

转载自blog.csdn.net/weixin_41165585/article/details/89312539
今日推荐