searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

binlog

2023-11-13 08:03:01
32
0

MySQL的 Binary Log (Binlog)是MySQL数据库运行过程中的一种重要日志文件,记录了所有对MySQL数据库执行的数据修改语句(如INSERT,UPDATE,DELETE)和数据库的结构变更语句(如CREATE,ALTER,DROP)。同时,每条记录内容都包含了该语句执行的精确时间(可以理解为事件的发生时间)。

Binlog主要用于以下三个目的:

  1. 复制: Binlog用于实现MySQL的主从复制,即从服务器可以读取主服务器的Binlog来保持与主服务器的同步。主服务器上的所有数据改变(比如增,删,改)都写入二进制日志,然后从服务器获取这些日志,然后在它的本地数据据进行重放这些日志,从而达到数据的一致性。从而实现负载均衡和故障转移。

  2. 数据恢复: 当数据库出现故障时,可以使用Binlog进行点时间恢复。通过回放Binlog日志记录,可以将数据库状态恢复到某一特定时间点的状态,从而可以恢复数据并最小化数据丢失。

  3. 审计: Binlog也被用于审计目的。通过审查日志,您可以看到何时对数据进行了更改,以及更改是如何进行的。

Binlog的优势:

  • 数据安全性: Binlog可以提供一种数据恢复手段,在硬件故障或者人为误操作的情况下,可以通过点时间恢复(PITR)来恢复数据。
  • 高可用性: 利用Binlog进行主从复制,可以提升数据的高可用性,实现负载均衡和故障转移。
  • 事务一致性: 所有的事务提交都会在Binlog中依次有所记录,可以保证ACID中的一致性和持久性。
  • 实时性: 使用BinlogJournal存储方式,可以在事务提交的同时写Binlog,降低了同步延迟。 

下面是基于binlog实现MySQL主备库配置的主要步骤:

  1. 在主服务器上启动二进制日志

    在MySQL的配置文件mysqld.cnf中(通常在/etc/mysql/mysql.conf.d/mysqld.cnf),添加如下配置项:

    [mysqld]
    log-bin=mysql-bin  # 启用binlog
    binlog-format=ROW  # 设置binlog格式
    server-id=1  # 设置服务器ID,唯一即可
    
  2. 在主服务器上创建用于复制的用户并授权

    启动MySQL服务并登陆MySQL,创建一个用户mysql_repl,并授予其replication权限:

    CREATE USER 'mysql_repl'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'mysql_repl'@'%';
    
  3. 获取主服务器的状态信息

    在主服务器上执行SHOW MASTER STATUS;来获取当前的二进制日志文件名和位置:

    SHOW MASTER STATUS;
    

    记住这里的File和Position信息,后面在备机上需要用到。

  4. 在备服务器上设置服务器ID

    进入备服务器的MySQL配置文件,在mysqld.cnf中设置server-id:

    [mysqld]
    server-id=2  # 设置服务器ID,唯一即可
    
  5. 在备服务器上配置复制

    在备服务器上,配置复制,告诉从服务器去连接主服务器的哪个位置开始复制数据:

    CHANGE MASTER TO 
    MASTER_HOST='master_host_name',  # 主服务器的IP或者域名
    MASTER_USER='replication_user_name',  # 主服务器上面创建的用于复制的用户名
    MASTER_PASSWORD='replication_password',  # 主服务器上面创建的用于复制的用户的密码
    MASTER_LOG_FILE='recorded_log_file_name',  # 主服务器上面记录的日志文件名
    MASTER_LOG_POS=recorded_log_position;  # 主服务器上面记录的日志位置
    
  6. 启动从服务器复制

    在备服务器上,执行START SLAVE;开启复制过程。

  7. 检查主从复制状态

在备服务器上,执行SHOW SLAVE STATUS\G;查看复制状态,如果看到 "Slave_IO_Running: Yes" 和 "Slave_SQL_Running: Yes",则意味着主从复制配置成功。

0条评论
0 / 1000
任****帅
9文章数
0粉丝数
任****帅
9 文章 | 0 粉丝
任****帅
9文章数
0粉丝数
任****帅
9 文章 | 0 粉丝
原创

binlog

2023-11-13 08:03:01
32
0

MySQL的 Binary Log (Binlog)是MySQL数据库运行过程中的一种重要日志文件,记录了所有对MySQL数据库执行的数据修改语句(如INSERT,UPDATE,DELETE)和数据库的结构变更语句(如CREATE,ALTER,DROP)。同时,每条记录内容都包含了该语句执行的精确时间(可以理解为事件的发生时间)。

Binlog主要用于以下三个目的:

  1. 复制: Binlog用于实现MySQL的主从复制,即从服务器可以读取主服务器的Binlog来保持与主服务器的同步。主服务器上的所有数据改变(比如增,删,改)都写入二进制日志,然后从服务器获取这些日志,然后在它的本地数据据进行重放这些日志,从而达到数据的一致性。从而实现负载均衡和故障转移。

  2. 数据恢复: 当数据库出现故障时,可以使用Binlog进行点时间恢复。通过回放Binlog日志记录,可以将数据库状态恢复到某一特定时间点的状态,从而可以恢复数据并最小化数据丢失。

  3. 审计: Binlog也被用于审计目的。通过审查日志,您可以看到何时对数据进行了更改,以及更改是如何进行的。

Binlog的优势:

  • 数据安全性: Binlog可以提供一种数据恢复手段,在硬件故障或者人为误操作的情况下,可以通过点时间恢复(PITR)来恢复数据。
  • 高可用性: 利用Binlog进行主从复制,可以提升数据的高可用性,实现负载均衡和故障转移。
  • 事务一致性: 所有的事务提交都会在Binlog中依次有所记录,可以保证ACID中的一致性和持久性。
  • 实时性: 使用BinlogJournal存储方式,可以在事务提交的同时写Binlog,降低了同步延迟。 

下面是基于binlog实现MySQL主备库配置的主要步骤:

  1. 在主服务器上启动二进制日志

    在MySQL的配置文件mysqld.cnf中(通常在/etc/mysql/mysql.conf.d/mysqld.cnf),添加如下配置项:

    [mysqld]
    log-bin=mysql-bin  # 启用binlog
    binlog-format=ROW  # 设置binlog格式
    server-id=1  # 设置服务器ID,唯一即可
    
  2. 在主服务器上创建用于复制的用户并授权

    启动MySQL服务并登陆MySQL,创建一个用户mysql_repl,并授予其replication权限:

    CREATE USER 'mysql_repl'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'mysql_repl'@'%';
    
  3. 获取主服务器的状态信息

    在主服务器上执行SHOW MASTER STATUS;来获取当前的二进制日志文件名和位置:

    SHOW MASTER STATUS;
    

    记住这里的File和Position信息,后面在备机上需要用到。

  4. 在备服务器上设置服务器ID

    进入备服务器的MySQL配置文件,在mysqld.cnf中设置server-id:

    [mysqld]
    server-id=2  # 设置服务器ID,唯一即可
    
  5. 在备服务器上配置复制

    在备服务器上,配置复制,告诉从服务器去连接主服务器的哪个位置开始复制数据:

    CHANGE MASTER TO 
    MASTER_HOST='master_host_name',  # 主服务器的IP或者域名
    MASTER_USER='replication_user_name',  # 主服务器上面创建的用于复制的用户名
    MASTER_PASSWORD='replication_password',  # 主服务器上面创建的用于复制的用户的密码
    MASTER_LOG_FILE='recorded_log_file_name',  # 主服务器上面记录的日志文件名
    MASTER_LOG_POS=recorded_log_position;  # 主服务器上面记录的日志位置
    
  6. 启动从服务器复制

    在备服务器上,执行START SLAVE;开启复制过程。

  7. 检查主从复制状态

在备服务器上,执行SHOW SLAVE STATUS\G;查看复制状态,如果看到 "Slave_IO_Running: Yes" 和 "Slave_SQL_Running: Yes",则意味着主从复制配置成功。

文章来自个人专栏
mongo
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0