标签:inf binlog 获取 dac 根据 p12 数据库宕机 日志功能 sys
随着访问量的不断增加,单台MySQL数据库服务器压力不断的增加,需要对MySQL进行优化和架构改造,如果MySQL优化不能明显改善,可以使用高可用,主从复制,读写分离,拆分库,拆分表等方法来进行优化.
MySQL主从复制的目的是实现数据冗余备份,将master数据库数据定时同时到slave库中,一旦master数据库宕机,可以将Web应用数据库配置快速切换至slave数据库,确保Web应用有较高的高可用率.
主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是准实时的业务数据库。
1、做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。
2、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。
3、读写分离,使数据库能支撑更大的并发。在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。
主从复制架构图
mysql主从数据同步是一个异步复制的过程,要实现复制首先需要在master上开启bin-log日志功能,bin-log日志用于记录在master库中执行的增,删,改,查的SQL语句整个过程需要开启3个线程,分别是master 开启I/O线程,slave 开启I/O线程和SQL线程,以下是具体原理:
(1)slava上执行slave start, slave I/O线程会通过在master服务器上创建的授权用户连接上master,并请求master从指定的文件和位置之后发送bin-log日志(日志文件名和位置就是在配罝主从复制服务时执行change master命令指定的);
(2)master服务器接收到来自Slave服务器的I/O线程的请求后,其上负责复制的I/O线程会根据slave服务器的I/O线程请求的信息分批读取指定bin-log日志文件指定位置之后的bin-log日志信息,然后返回给slave端的I/O线程。返回的信息中除了bin-log日志内容外,还有在Master服务器端记录的新的Binlog文件名称以及在新的bin-log中的下一个 指定更新位置
(3)slave服务器I/O线程接收到信息后,将接收到的日志内容依次添加到slave端的relay-log(中继日志)文件(MySQL-relay-bin.xxxxxx)的最末端,并将读取到的master端的bin-log的文件名和position点记录到master.info文件中,以便在下一次读取的时候能告知master从相应的bin-log文件名及最后一个position点开始发起请求;
(4)slave服务器 SQL线程检测到realy-log中内容有更新,会立刻解析realy-log日志中的内容,将解析后的SQL语句在slave服务器执行,执行成功后slave库与master库保持一致。
master 192.168.10.1
slave 192.168.10.2
1、都要安装mysql数据库并配置
yum install -y mariadb
2、修改主、从配置文件 /etc/my.cnf
master:在[mysqld]标签下加入下面二句
log-bin=mysql-bin
server-id=1
slave:在[mysqld]标签下加入下面一句
server-id=2
3、修改完成之后重新启动MySQL
systemctl start mariadb
此时可以看 ll /var/lib/mysql/ 看下是否已经有二进制日志mysql-bin.000001
4、建立复制账号并授权、授权给slave服务器
grant replication slave on . to ‘test‘@‘192.168.10.2‘ identified by ‘123456‘;
授权时如果想授权任何一个IP都可以登陆,则把IP地址改为 % 号
grant replication slave on . to ‘test‘@‘%‘ identified by ‘123456‘;
flush privileges; --> 刷新权限
授权完成后,在从服务器上登陆测试
mysql -utest -h192.168.122.10 -p123456
5、给master加上锁,防止有新的数据写入
flush tables with read lock;
6、查看二进制日志文件
show master status;
7、退出master数据库,登陆slave数据库,关闭slave复制线程(默认停止状态)
stop slave;
8、配置主从关系,,在slave服务器上写代码、需要配置连接主服务器的信息,从服务器能不能在主服务器上面获取二进制日志,全靠下面的配置信息
change master to master_user=‘test‘,master_password=‘123456‘,master_host=‘192.168.10.1‘,
master_port=3306,master_log_file=‘mysql-bin.000001‘,master_log_pos=245;
9、slave服务器启动slave线程
start slave;
10、启动完成之后,再查看slave线程连接主服务器的状态
show start slave;
下面两个显示都为yes算成功了
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
标签:inf binlog 获取 dac 根据 p12 数据库宕机 日志功能 sys
原文地址:https://blog.51cto.com/12191098/2353185