Full talk about MySQL database backup

Brief introduction

Part1: write on Top

Before long, I wrote a whole library of production MySQL database backup script, there is today a colleague asked me if I want to add a -R parameter to back up the stored procedure on the grounds if the default is due to mysqldump --help about stored procedures backup is false.

routines FALSE

Full production MySQL database backup script

Real

Part1: write on Top

I usually back up to three parameters

--single-transaction -A --master-data=2

Namely prevention lock, full database backup and copy records information

Someone asked how to restore a single library? Can the venue

Restore a library and a full tables from MySQL database backup

Part2: Creating Stored Procedures

[root@HE3 ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.6.25-log MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database helei;
Query OK, 1 row affected (0.02 sec)

mysql> use helei;
Database changed
mysql> create table helei(
    -> id int(10) unsigned NOT NULL AUTO_INCREMENT,
    -> c1 int(10) NOT NULL DEFAULT '0',
    -> c2 int(10) unsigned DEFAULT NULL,
    -> c5 int(10) unsigned NOT NULL DEFAULT '0',
    -> c3 timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    -> c4 varchar(200) NOT NULL DEFAULT '',
    -> PRIMARY KEY(id),
    -> KEY idx_c1(c1),
    -> KEY idx_c2(c2)
    -> )ENGINE=InnoDB ;
Query OK, 0 rows affected (0.02 sec)

mysql> delimiter $$
mysql> drop procedure if exists `insert_helei` $$
and()*row_num),now(),repeat('su', floor(rand()*20)));
set i = i+1;
 END while;

end$$Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> create procedure `insert_helei`(in row_num int )
    -> begin
    ->  declare i int  default 0;
    ->  while i < row_num do
    -> insert into helei(c1, c2, c5,c3, c4) values( floor(rand()*row_num),floor(rand()*row_num),floor(rand()*row_num),now(),repeat('su', floor(rand()*20)));
    -> set i = i+1;
    ->  END while;
    -> 
    -> end$$
Query OK, 0 rows affected (0.00 sec)

mysql>
复制代码

Part3: perform different backup script

Parameters are

--single-transaction -A --master-data=2

--single-transaction -A -R --master-data=2

Part4: Comparison SQL file

It can be found in the file add the -R recorded a SQL statement creates a stored procedure, did not increase -R is not recorded.

-- Dumping routines for database 'helei'
--
/*!50003 DROP PROCEDURE IF EXISTS `insert_helei` */;
/*!50003 SET @saved_cs_client      = @@character_set_client */ ;
/*!50003 SET @saved_cs_results     = @@character_set_results */ ;
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
/*!50003 SET character_set_client  = utf8 */ ;
/*!50003 SET character_set_results = utf8 */ ;
/*!50003 SET collation_connection  = utf8_general_ci */ ;
/*!50003 SET @saved_sql_mode       = @@sql_mode */ ;
/*!50003 SET sql_mode              = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_helei`(in row_num int )
begin
 declare i int  default 0;
 while i < row_num do
insert into helei(c1, c2, c5,c3, c4) values( floor(rand()*row_num),floor(rand()*row_num),floor(rand()*row_num),now(),repeat('su', floor(rand()*20)));
set i = i+1;
 END while;
end ;;
DELIMITER ;
/*!50003 SET sql_mode              = @saved_sql_mode */ ;
/*!50003 SET character_set_client  = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ;
/*!50003 SET collation_connection  = @saved_col_connection */ ;
复制代码

verification

Part1: Verify

Backup files emptied linux environment, heavy mysql, without introducing -R i.e. without creating parameters stored in the SQL procedure

[root@HE3 ~]# mysql -uroot -p < Master_db_201612051722.sql 
Enter password: 
[root@HE3 ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.6.25-log MySQL Community Server (GPL)
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use helei;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from helei;
Empty set (0.00 sec)
mysql> call insert_helei(5);
Query OK, 1 row affected (0.01 sec)
mysql> select * from helei;
+----+----+------+----+---------------------+------------------------------------+
| id | c1 | c2   | c5 | c3                  | c4                                 |
+----+----+------+----+---------------------+------------------------------------+
|  1 |  1 |    2 |  0 | 2016-12-05 17:51:37 | sususususususususususu             |
|  2 |  2 |    1 |  0 | 2016-12-05 17:51:37 | sususususususususususususususususu |
|  3 |  4 |    1 |  3 | 2016-12-05 17:51:37 | sususususususususususu             |
|  4 |  3 |    2 |  3 | 2016-12-05 17:51:37 | sususususususususususu             |
|  5 |  0 |    2 |  4 | 2016-12-05 17:51:37 | sususususususususu                 |
+----+----+------+----+---------------------+------------------------------------+
5 rows in set (0.00 sec)
mysql>
复制代码

It found that even without the addition of -R parameter, it still can call a stored procedure created earlier.

- Summary -

Mysql.proc stored procedures are stored in the table, the author thanks -A full database backup strategy, i.e. comprising the mysql, the storage process is to be backed up. -R parameters are generally used for single or multiple backups backup. Since the pen is limited by the level of the preparation time is very short, and the text will inevitably be some errors or inaccuracies, inadequacies urge readers criticism.


Guess you like

Origin juejin.im/post/5d03a6b7e51d454d1d62850d