mysql 主从复制 (1)

Mysql主从配置mysql

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

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

1.阿里云部署环境vim

主机( 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.从数据库的配置

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

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

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错误

 

 

能够经过:

中止从机.

stop slave

重置从机

reset slave

启动从机

start slave

来解决这个错误

相关文章
相关标签/搜索