MySQL operation and maintenance binary log
The MySQL binary log stores SQL statements that cause or may cause data changes. Functions such as real-time remote disaster recovery backup, read-write separation, and data recovery can be completed through binary logs. Next, let's take a look at the Mysql binary log.
Enable bin-log log
Mysql does not enable bin-log log by default, we need to add the configuration ourselves.
log-bin=mysql-bin binlog_format=mixed server-id = 1 expire_logs_days = 10
log-bin After configuring this item, the binary log function is enabled. mysql-bin is the bin-log log file name.
expire_logs_days = 10 indicates that only the bin-log logs of the last 10 days will be stored.
Generally, bin-log logs are stored under the mysql installation path /var/
Operation and maintenance tips: It is best not to put binary log files and database data files on the same hard disk. If the hard drive storing the data files is damaged, you can use the binary log of another hard drive to recover the data
Several useful commands
flush logs: Generate new bin-log logs
show master status: View the last bin-log log status.
reset master: clear all bin-log files
mysql > show master status
Viewing Mysql log
Because the log is a binary log, using the general command cat or vim to view it will result in garbled code. . Mysql provides us with the tool mysqlbinlog. Use it to view it.
./mysqlbinlog ../var/mysql-bin.000015 …… # at 123 #200601 8:35:19 server id 1 end_log_pos 154 CRC32 0xd25b404e Previous-GTIDs # [empty] SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/; DELIMITER ; # End of log file /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/; ……
at: pos node when sql starts
server_id: the service number of the database host;
end_log_pos 154: pos node at the end of sql
Mysqlbinlog common options are as follows:
--start-datetime: Read the specified time from the binary log that is equal to the timestamp or later than the local computer
--stop-datetime: Read the specified time from the binary log that is less than the timestamp or equal to the local computer The time value is the same as above
--start-position: Read the specified position event position from the binary log as the start.
--stop-position: Read the specified position event position from the binary log as the event as of
-d,--database= name: Only view log operations of the specified database
Use bin-log logs to recover data
Export sql file Command: mysqldump database name [data table name 1 [data table name 2...]] > External file directory (recommended to use .sql)
sql file import database: mysql - u** -p** Database name < Backup file directory
Now simulate a scenario: a database is backed up regularly at 3 o'clock every night, and the website runs normally for half a day the next day. Suddenly at 5 o'clock in the afternoon, programmer A accidentally did not add a WHERE condition during DELETE, and then all the data in one of the tables was lost. Then Xiao A found the technical director Dasheng and asked him to help recover the data.
The binlog_test database has only one user table
The data before backup at three o'clock in the morning is as follows:
+---------+----------+---------------------+ | user_id | username | add_time | +---------+----------+---------------------+ | 1 | gwx | 2018-07-05 13:00:31 | | 2 | snn | 2018-07-05 14:00:00 | | 3 | zy | 2018-07-05 15:00:00 | +---------+----------+---------------------+
At 3 o'clock in the morning, the data was backed up
mysqldump binlog_test -l -F > /root/sql_backup/20180706.sql ll /root/sql_backup/ 总用量 4 -rw-r--r-- 1 root root 2149 7月 6 13:42 20180706.sql =======数据备份完成=========
The website has been running normally for a period of time, and many users have registered.
INSERT INTO `user` (username) values('user1'),('user2'),('user3'); Query OK, 3 rows affected (0.01 sec) Records: 3 Duplicates: 0 Warnings: 0 select * from user; +---------+----------+---------------------+ | user_id | username | add_time | +---------+----------+---------------------+ | 1 | gwx | 2018-07-05 13:00:31 | | 2 | snn | 2018-07-05 14:00:00 | | 3 | zy | 2018-07-05 15:00:00 | | 4 | user1 | 2018-07-06 15:01:18 | | 5 | user2 | 2018-07-06 15:01:18 | | 6 | user3 | 2018-07-06 15:01:18 | +---------+----------+---------------------+ ==============新增了3个用户user1 user2 及user3==============
At 5 o'clock in the afternoon, Little A started to act stupid
DELETE FROM user; Query OK, 6 rows affected (0.00 sec) =========没where条件,数据全没了===========
Little A found the Great Sage to help restore the data. The Great Sage first restored yesterday's data. The data was restored at 3 a.m.
service nginx stop; # 大圣先关闭了nginx,使网站用户暂时访问不了数据库 Stoping nginx... done MariaDB [binlog_test]> flush logs; #生成新的binlog日志 MariaDB [binlog_test]> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000003 | 1536 | | | +------------------+----------+--------------+------------------+ mysql -v -f binlog_test < /root/sql_backup/20180706.sql
At this time, the Great Sage had restored the data at 3 a.m. last night
MariaDB [binlog_test]> select * from user; +---------+----------+---------------------+ | user_id | username | add_time | +---------+----------+---------------------+ | 1 | gwx | 2018-07-05 13:00:31 | | 2 | snn | 2018-07-05 14:00:00 | | 3 | zy | 2018-07-05 15:00:00 | +---------+----------+---------------------+ =============昨晚凌晨三点数据恢复完成===============
Next, the data between 3 a.m. and DELETE was restored
First find the pos point of delete. After backup, the log is 000002. After deletion, flush logs are also 000003, so just find the pos before 000002 delete.
# /usr/local/mariadb/bin/mysqlbinlog --stop-position=629 > 'mysql-bin.000002' > | mysql binlog_test; MariaDB [binlog_test]> select * from user; +---------+----------+---------------------+ | user_id | username | add_time | +---------+----------+---------------------+ | 1 | gwx | 2018-07-05 13:00:31 | | 2 | snn | 2018-07-05 14:00:00 | | 3 | zy | 2018-07-05 15:00:00 | | 4 | user1 | 2018-07-06 15:01:18 | | 5 | user2 | 2018-07-06 15:01:18 | | 6 | user3 | 2018-07-06 15:01:18 | +---------+----------+---------------------+ ==============数据都回来了========================
The above is the detailed content of MySQL operation and maintenance binary log. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

The main role of MySQL in web applications is to store and manage data. 1.MySQL efficiently processes user information, product catalogs, transaction records and other data. 2. Through SQL query, developers can extract information from the database to generate dynamic content. 3.MySQL works based on the client-server model to ensure acceptable query speed.

Laravel is a PHP framework for easy building of web applications. It provides a range of powerful features including: Installation: Install the Laravel CLI globally with Composer and create applications in the project directory. Routing: Define the relationship between the URL and the handler in routes/web.php. View: Create a view in resources/views to render the application's interface. Database Integration: Provides out-of-the-box integration with databases such as MySQL and uses migration to create and modify tables. Model and Controller: The model represents the database entity and the controller processes HTTP requests.

The process of starting MySQL in Docker consists of the following steps: Pull the MySQL image to create and start the container, set the root user password, and map the port verification connection Create the database and the user grants all permissions to the database

I encountered a tricky problem when developing a small application: the need to quickly integrate a lightweight database operation library. After trying multiple libraries, I found that they either have too much functionality or are not very compatible. Eventually, I found minii/db, a simplified version based on Yii2 that solved my problem perfectly.

The key to installing MySQL elegantly is to add the official MySQL repository. The specific steps are as follows: Download the MySQL official GPG key to prevent phishing attacks. Add MySQL repository file: rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm Update yum repository cache: yum update installation MySQL: yum install mysql-server startup MySQL service: systemctl start mysqld set up booting

Installing MySQL on CentOS involves the following steps: Adding the appropriate MySQL yum source. Execute the yum install mysql-server command to install the MySQL server. Use the mysql_secure_installation command to make security settings, such as setting the root user password. Customize the MySQL configuration file as needed. Tune MySQL parameters and optimize databases for performance.

Article summary: This article provides detailed step-by-step instructions to guide readers on how to easily install the Laravel framework. Laravel is a powerful PHP framework that speeds up the development process of web applications. This tutorial covers the installation process from system requirements to configuring databases and setting up routing. By following these steps, readers can quickly and efficiently lay a solid foundation for their Laravel project.

MySQL and phpMyAdmin are powerful database management tools. 1) MySQL is used to create databases and tables, and to execute DML and SQL queries. 2) phpMyAdmin provides an intuitive interface for database management, table structure management, data operations and user permission management.
