mysql开启bin-log日志,实习主从配置,读写分离

 

参考文档:http://blog.csdn.net/goustzhu/article/details/9339621   主从、主主、半同步复制

          http://database.51cto.com/art/201505/475376_all.htm  集群

一、什么是主从复制

 

至少两台数据库服务器,可以分别设置主服务器和从服务器,对主服务器的任何操作(更新)都会同步到从服务器上

 

 

二、实现原理

mysql中有一种日志,叫做bin日志(二进制日志),会记录下所有修改过数据库的sql语句。主从复制的原理实际是多台服务器都开启bin日志,然后主服务器会把执行过的sql语句记录到bin日志中,之后从服务器读取这个bin日志,把该日志的内容保存到自己中继日志里面,从服务器再把中继日志中记录的sql语句同样的执行一遍。这样从服务器上的数据就和

主服务器相同了。

 

实现的技术是:用户的授权,和log-bin日志的开启。

 

问题:如何解决主从同步过程中的延迟问题?

解答:可以在主从同步的过程中加一家缓存服务器,把刚更新的数据暂时保存在缓存服务器中。

三、log-bin日志

1、如何开启log-bin日志

打开my.ini的配置文件

Linux在lnmp中/etc/my.cnf配置文件中进行配置

 

2、如何 查看log-bin日志里面的内容。

使用一个命令,

mysqlbinlog  --no-defaults 日志的文件名及路径

mysqlbinlog --no-defaults --base64-output=decode-rows -v  /usr/local/mysql/var/mysql-bin.000005

 

直接mysqlbinlog出来的 文件

执行sql部分的sql显示为base64编码格式

固生成sql记录的时候 不能用常规的办法去生成 需要加上相应的参数才能显示出sql语句

--base64-output=decode-rows -v

 

当mysqlbinlog: command not found 时 ln -s /usr/local/mysql/bin/mysqlbinlog /usr/bin

 ln -s /usr/local/mysql/bin/mysqlbinlog /usr/bin

3、log-bin日志相关的一些命令操作

前提:数据mysql相关的命令

flush logs 产生一个新的log-bin日志

 

reset master :清空以前的log-bin日志,并产生一个新的log-bin日志

show master status; 查看最新的一个log-bin日志,包括最新的pos位置。

 

4、使用bin-log日志完成一个案例,恢复数据的一个案例

步骤:

(1)flush logs产生一个新的log-bin日志文件。

(2)新建一张表

create table nihao(id int);

(3)flush logs 产生一个新的log-bin日志文件

insert into nihao values(1000);

insert into nihao values(2000);

insert into nihao values(3000);

(4)delete from nihao

(5)要求恢复数据

 

比如一个家公司,在上午9:00备份了一次数据。到9:30时,由于员工的误操作,则把所有的数据都给删除了。要求要恢复数据到9:30.

 

思路:打开log-bin日志文件,进行分析。查找insert语句的pos位置。根据pos位置来恢复数据

  第一步,查看当前记录日志文件的信息

第二步,查看操作的SQL语句的位置

第三步,使用以下命令进行还原

 mysqlbinlog   --no-defaults 日志文件 --start-pos=”开始的pos点” --stop-pos=’结束的pos点’

 

  |  mysql  -uroot  -proot  test

 

例如

mysqlbinlog --no-defaults --base64-output=decode-rows  d:/webserver/wamp/wamp64/bin/mysql/mysql5.7.14/data/mysql-bin.000008 --start-position="123" --stop-position="1213" | mysql -uroot -p test

 

四、主从配置

说明:在同步前,要同步的数据库在两个数据库服务器中都必须存在,两个数据库应该保持一致。开启主从同步后,主服务器的写操作都会同步到从服务器中。

 

 

1、配置主服务器:

(1)主和从服务器都要开启log-bin日志,每台服务器设置一个唯一的server-id的值。并重启服务器。

主服务器:IP 192.168.1.114

(2)要给从服务器授权一个用户,该用户授予复制权限。

(3)grant replication slave on *.* to 'tang'@'%' identified by '123';

(3)要查看主服务器里面log-bin日志的名字和pos位置。(停止对主服务器的操作,暂时不往里面做更新操作)

show master status;

2、配置从服务器

从服务器:IP  192.168.1.252

(1)执行stop slave停止从服务器: 

   stop slave

(2)具体的配置:

change master to master_host=’主服务器的ip’,master_user=’授权的用户名’,master_password=”授权的密码”,master_log_file=’log-bin日志文件的名称’,master_log_pos=pos位置;

change master to master_host='10.1.13.16',master_user='tang',master_password='123',master_log_file='mysql-bin.000010',master_log_pos=252;

(3)开启从服务器

start slave

(4)查看从服务器的状态:

show slave status;

Slave_IO_Running:Yes

此进程负责从服务器从主服务器上读取binlog 日志,并写入从服务器上的中继日志。 

Slave_SQL_Running:Yes

此进程负责读取并且执行中继日志中的binlog日志, 

注:以上两个都为yes则表明成功,只要其中一个进程的状态是no,则表示复制进程停止,错误原因可以从”last_error”字段的值中看到。

演示效果:

  主服务器插入数据,可以在从服务器上同步

    主服务器

  

 

从服务器

3、如何撤销从服务器

(1)stop slave

(2)reset slave all

  从服务器

主服务器

六、读写分离实现

在程序层次进行设计

class  mysql{

$dbm=主服务器 

$dbs1=从服务器 

$dbs2=从服务器 

public function query(){

   在query里面进行语句判断,分析连接不同的mysql服务器。 

如果是查询则随机连接两台从服务器,如果是修改操作,则连接主服务器

}

}

tp框架支持读写分离;

 

    'DB_DEPLOY_TYPE'=>1,//分布式数据库支持

    'DB_TYPE'               => 'mysql',     // 数据库类型

    'DB_HOST'               => 'localhost,192.168.3.250', // 服务器地址

    'DB_NAME'               => 'php,php',          // 数据库名

    'DB_USER'               => 'root,xiaogang',      // 用户名

    'DB_PWD'                => 'root,1234',          // 密码

    'DB_PORT'               => '3306',        // 端口

    'DB_PREFIX'             => '',

    'DB_RW_SEPARATE'=>true,//支持读写分离

说明: 以上配置为读写分离操作,如果需要做到读写分离、主从复制,还必须手动配置开启主从复制模式

 

MySQL数据的主从复制、半同步复制和主主复制详解

http://blog.csdn.net/bayden_hu/article/details/52400319

MySQL主从复制实现读写分离

http://blog.csdn.net/king_kgh/article/details/74904954

 

启动 start slave

关闭 stop slave

重置 reset slave

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于使用 MySQL 主从复制实现读写分离的毕业项目,你考虑以下步骤要点: 1. 环准备: -装 MySQL 数据库:在主服务器和从服务器上安装 MySQL 数据库。 - 配置主服务器:在主服务器上开启二进制日志功能,并设置唯一标识(server-id)。 - 配置从服务器:在从服务器上设置唯一标识(server-id)和复制账户。 2. 主从复制配置: - 配置主服务器:修改主服务器的配置文件,启用二进制日志binlog)功能,并设置相关参数如binlog_format、log-bin等。 - 配置从服务器:修改从服务器的配置文件,设置相关参数如server-id、relay-log等,并指定主服务器的地址和复制账户。 - 启动主从复制:重启主服务器和从服务器,使配置生效,启动主从复制。 3. 读写分离实现: - 读写分离架构:将主服务器用于写操作,从服务器用于读操作。这样可以提高数据库的读取性能和扩展性。 - 代码实现:在应用程序中,根据业务需求,通过配置或代码的方式,将读操作与写操作分别发送到主服务器和从服务器。 4. 数据同步与一致性: - 复制延迟处理:由于主从复制存在一定的延迟,可能导致从服务器读取到的数据不是最新的。可以通过配置和监控来处理延迟情况,例如通过设置复制延迟报警、选择合适的复制模式等。 - 数据一致性:在写操作完成后,需要保证数据在主服务器和从服务器之间的同步。可以通过配置同步策略、监控同步状态等来确保数据一致性。 5. 故障恢复与监控: - 故障恢复:当主服务器或从服务器出现故障时,需要进行相应的故障恢复操作。例如,当主服务器宕机时,可以将从服务器提升为新的主服务器,并重新配置其他从服务器。 - 监控与报警:建立监控系统,实时监控数据库的主从复制状态、延迟情况、性能指标等,并设置报警机制,及时处理异常情况。 6. 性能优化与扩展: - 数据库性能优化:通过索引、分表分库、查询优化等方式提高数据库的读写性能。 - 扩展能力:当数据库负载增加时,可以考虑使用主从复制集群、分布式数据库等方式进行扩展。 以上是一个基本的 MySQL 主从复制读写分离的实现步骤和要点,你可以根据具体的项目需求进行相应的调整和扩展。希望这些信息对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值