IT

腾讯云服务器与虚拟机搭建主从分离数据库

测试环境

主数据库: CentOS7, MySQL15.1 , 腾讯云服务器外网IP

从数据库: CentOS7, MySQL15.1 , 虚拟机IP(无关紧要)

首先安装好mysql 我之前安装的lnmp 所以挺多指令都挺简单的

lnmp可以去百度安装 我这里就不做说明了

先配置mysql的数据配置

vim /etc/my.cnf

打开之后 找到一个 [mysqld] 在这个里面去新增配置(下面就是你要设置的主配置了) 编辑命令: i

主数据库配置【把配置里其他相似的键删掉 不然参数会被覆盖 就不生效了】

server-id=200  #设置主服务器的ID
innodb_flush_log_at_trx_commit=2  #事务处理时 写进log速度 0:速度最快不安全 1:最安全速度慢 2:速度快也安全
sync_binlog=1  #开启binlog日志同步功能
log-bin=mysql-bin-200  #binlog日志文件名
#binlog-do-db=test  #这个表示只同步某个库 (如果没有此项,表示同步所有的库)(这里的test表示我同步是test库)
binlog-ignore-db=mysql #不关注该库
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
auto-increment-increment=2 #自增步长为2
auto-increment-offset=1 #服务器序号

img

编辑完成后 保存命令 :wq

重启数据库 lnmp mysql restart

然后就进入mysql 命令:

mysql -uroot -p 

输入mysql密码(默认输入root)

创建主数据库账号(用于从库链接的账户)

 grant replication slave on *.* to '这里填写用户名mark'@'这里填写从数据库的IP或者%' identified by '这里填写密码123456';

#授权给从数据库IP或%任意主机,用户名mark 密码123456

查看配置状态(这里的两个数据很重要 等会下面会用 一个file 一个position)

show master status

img

锁定数据库

FLUSH TABLES WITH READ LOCK;

退出去mysql 备份多个数据库

 mysqldump --master-data -uroot -p -B youxun_admin youxun_basic youxun_gift youxun_log youxun_pay youxun_task youxun_user youxun_userinfo >./1.sql

再进入mysql解除绑定

 UNLOCK TABLES;

好了 上面的主库配置就完成了

下面去到我们的从库配置 还是照旧vim /etc/my.cnf

从数据库配置 【把配置里其他相似的键删掉 不然参数会被覆盖 就不生效了】

server-id=201  #设置主服务器的ID
sync_binlog=1  #开启binlog日志同步功能
log-bin=mysql-bin-201  #binlog日志文件名
innodb_flush_log_at_trx_commit=2
auto-increment-increment=2 #自增步长为2
auto-increment-offset=2 #服务器序号

img

编辑完成后 保存命令 :wq

重启数据库 lnmp mysql restart

然后就进入mysql 命令:

mysql -uroot -p 

导入数据库(文件要从主数据库导入进来)

source /root/1.sql

输入mysql密码(默认输入root)

创建链接主库的配置

change master to master_host='这里填写主数据库的ip地址', master_user='填写刚刚创建的用户名mark' ,master_password='填写刚刚创建的密码123456', master_log_file='这里填写刚刚查看的File值mysql-bin-200.000002' ,master_log_pos=这里填写刚刚查看的Position值1163;

输入完后 启动slave 从库链接

start slave;

启动成功后 查看从库配置

show slave status \G;

img

看到了我们红色圈圈这两个值都为YES证明配置成功且链接主库成功了!!

如果看到slave_IO_Running为 connect 代表链接中 如果出现这种情况 一般来说要不就是账户密码写错了 要不然就是防火墙得问题 如果是防火墙得问题 就得去查看主库的防火墙是否屏蔽了mysql链接

我第一次测试的时候就出现这种问题 那咋办 就去查看主库的防火墙呗 修改防火墙得规则 或者停止防火墙(这样不安全)

这里就不说明防火墙设置了 可以去百度 主库防火墙查看规则 iptables –list

一般防火墙有两种 一种iptables 一种firewall 腾讯云的好像是用firewall的

如果想关闭主从分离的话就直接在从数据库输入该命令

stop slave;
reset slave;

好了 链接成功后就可以去测试下在主库新建一条数据 从库就会新建一条数据了

img

img

OK 大功告成!!

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注