Mysql主从配置

 

Mysql主从配置

大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是不堪设想。这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力。今天总结一下利用MySQL主从配置,实现读写分离,减轻数据库压力.

这里我们一阿里云为例来配置主从. mysql和mariadb是一样的配置的.我这里一mariadb为实际案例. 配置的时候两台阿里云使用的是内网地址.

1.阿里云部署环境

主机( master_mysql ): 192.168.1.200 OS:CentOS 7.4

从机( slave_mysql ): 192.168.1.201 OS: CentOS 7.4

主机和从机都需要安装好mysql 或者Mariadb数据库

2.主数据库的配置

首先使用命令

cd /etc

然后在执行

ls my.cnf

在使用编辑器vim打开my.cnf文件

vim my.cnf 按 i 进入编辑模式

几条配置文件的含义如下:

#设置主服务 的ID (id可以自己随便设置但是要保证和slave的id不一样)
server-id=200 
​
innodb_flush_log_at_trx_commit=2  #(参数的含义如下)
​
# 0:如果innodb_flush_log_at_trx_commit的值为0,log buffer每秒就会被刷写日志文件到磁盘,提交事务的时候不做任何操作(执行是由mysql的master thread线程来执行的。
# 主线程中每秒会将重做日志缓冲写入磁盘的重做日志文件(REDO LOG)中。不论事务是否已经提交)默认的日志文件是ib_logfile0,ib_logfile1
# 1:当设为默认值1的时候,每次提交事务的时候,都会将log buffer刷写到日志。
# 2:如果设为2,每次提交事务都会写日志,但并不会执行刷的操作。每秒定时会刷到日志文件。要注意的是,并不能保证100%每秒一定都会刷到磁盘,这要取决于进程的调度。
# 每次事务提交的时候将数据写入事务日志,而这里的写入仅是调用了文件系统的写入操作,而文件系统是有 缓存的,所以这个写入并不能保证数据已经写入到物理磁盘
# 默认值1是为了保证完整的ACID。当然,你可以将这个配置项设为1以外的值来换取更高的性能,但是在系统崩溃的时候,你将会丢失1秒的数据。
# 设为0的话,mysqld进程崩溃的时候,就会丢失最后1秒的事务。设为2,只有在操作系统崩溃或者断电的时候才会丢失最后1秒的数据。InnoDB在做恢复的时候会忽略这个值。
# 总结
# 设为1当然是最安全的,但性能页是最差的(相对其他两个参数而言,但不是不能接受)。如果对数据一致性和完整性要求不高,完全可以设为2,如果只最求性能,例如高并发写的日志服务器,设为0来获得更高性能
​
​
#开启binlog 志同步功能
sync_binlog=1 
​
#binlog 日志文件名
log-bin=mysql-bin-200 
​
# 这个表示只同步某个库 (如果没有此项,表示同步所有的库)
binlog-do-db=xxxx 

上面的配置写好之后按键盘ESC键在按shift+:输入wq.保存退出.

重启我们的主机数据库看自己的数据库是什么选用不同的命令

systemctl restart mysql或者 systemctl restart mariadb

完成后使用

mysql -u root -p 登录mysql或者mariadb.输入登录密码.这个是自己的数据库的账户密码.

再来给授权给从数据库服务 192.168.1.201, 户名mark,密码123456

可以根据自己的情况来配置

grant replication slave on *.* to 'mark'@'192.168.1.201' identified by '123456';

查看主数据库的状态

show master status;

到这一步我们就已经完成主数据库的配置了.

3.从数据库的配置

  1. 和前面的主机配置大同小异.

server-id=201 
innodb_flush_log_at_trx_commit=2 
sync_binlog=1 
log-bin=mysql-bin-201
  1. 配置完成后一样的保存退出.在重启从机的数据库.

systemctl restart mysql或者 systemctl restart mariadb

mysql -u root -p 登录mysql或者mariadb.输入登录密码.这个是自己的数据库的账户密码.

如果配置了同步的数据库,则在从机数据库上面要有一个和主机配置的数据库一样的数据库.

配置从机连接master

change master to master_host='192.168.1.200',master_user='mark' ,master_password='12345', master_log_file='mysql- bin-200.000004' ,master_log_pos=671;

参数说明:

master_host: 主机的ip

master_user : 主机授权的用户.

master_password : 主机授权时候填写的密码

master_log_file : 主机show master status;中的File

master_log_pos: 主机show master status;中的Position.

配置完成后启动slave.

start slave;

最后查看slave的状态

show slave status \G;

看到上图的状态就已经完全配置好主从数据库了.

4.验证是否配置成功

可以在主库上创建个库,再在从库上刷新查看是否同步

5.故障排除.

如果出现1236错误

可以通过:

  1. 停止从机.

    stop slave

  2. 重置从机

    reset slave

  3. 启动从机

    start slave

来解决这个错误

本文原创,欢迎收藏转载!!!

作 者: lizhonglin

github: https://github.com/Leezhonglin/

blog: https://leezhonglin.github.io/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kujirashark

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值