mysqlストレージ・プロシージャおよびログとデータ・リカバリ

3595 ワード

MySQLストアド・プロシージャ
Mysqlストアド・プロシージャは、特定の機能を達成するためのSQL文セットのセットであり、コンパイルされた後にデータベースに格納されます.
SQL文のグループを使用する必要がある場合、ユーザーはストレージ・プロシージャの名前を指定し、パラメータを指定するだけで実行を呼び出すことができます.
簡単に言えば、すでに書かれたコマンドのセットで、使う必要があるときに出して使えばいいのです.
\d //(        )
create procedure p1()
begin
set @i=0;
while @i<10 do
insert into user values(null,concat('user',@i),@i,concat('user',@i,'@qq.com'),1,99);
set @i=@i+1;
end while;
end;
//

実行ストレージ:call p 1ストレージの詳細を表示する:show create procedure p 1G削除トリガ:drop procedure p 1;
このストレージ・プロシージャは、ifの後ろに2つの文が処理され、c#のカッコに相当するため、beginとendが必要です.
 
 
bin-logログを開く
 
1,  vim          mysql     

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 

2,          
    server-id               = 123456
    log_bin                 = /var/log/mysql/mysql-bin

3,              


4,  mysql
sudo service mysql restart


5,  bin-log  :
mysql>show binary logs;

6,ls       mysql    
cd /var/lib/mysql



mysql>reset master;
7,     bin-log  

8,--   binlog    
mysqlbinlog mysql-bin.000001

 
          :
mysqldump -uroot -pwei test -l -F '/tmp/test.sql'
  :-F flush logs,            ,    log-bin  

データベースのリカバリ
bin-logログを開き、定期的にバックアップすることを前提としています.
考え方:
        
1,               

2,              

--      
mysql> reset master;
Query OK, 0 rows affected (0.39 sec)

--       
show binary logs;


--      
mysql> create database ops;
Query OK, 1 row affected (0.28 sec)

--       
mysql> use ops;
Database changed

--    
create table user(
    id int not null auto_increment,
    name char(20) not null,
    age int not null,
    primary key(id)
)engine=InnoDB;


--     
insert into user values(1,"wangbo","24"),(2,"guohui","22"),(3,"zhangheng","27");

--   
mysql> select *  from user;
+----+-----------+-----+
| id | name      | age |
+----+-----------+-----+
|  1 | wangbo    |  24 |
|  2 | guohui    |  22 |
|  3 | zhangheng |  27 |
+----+-----------+-----+
3 rows in set (0.00 sec)

--         
mysqldump -uroot -p -B -F -R -x --master-data=2 ops >/home/yc/py08/04-mysql/ops.sql

-----------------
    :
-B:     
-F:    
-R:       
-x:  
--master-data:        CHANGE MASTER    binlog        



--        
insert into user values(4,"liupeng","21"),(5,"xiaoda","31"),(6,"fuaiai","26");

--     
mysql> select * from user;
+----+-----------+-----+
| id | name      | age |
+----+-----------+-----+
|  1 | wangbo    |  24 |
|  2 | guohui    |  22 |
|  3 | zhangheng |  27 |
|  4 | liupeng   |  21 |
|  5 | xiaoda    |  31 |
|  6 | fuaiai    |  26 |
+----+-----------+-----+
6 rows in set (0.00 sec)



--      ,   test   
drop database ops;

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| python4            |
| sys                |
| wx                 |
+--------------------+
6 rows in set (0.00 sec)

 
1,  binlog    
--  binlog    sql  , vim        drop  
-- [root@vm-002 backup]# mysqlbinlog -d ops /var/lib/mysql/mysql-bin.000002> /home/yc/002bin.sql

sudo mysqlbinlog -d ops /var/log/mysql/mysql-bin.000002> /home/yc/py08/04-mysql/002bin.sql


2,--      drop  
vim 002bin.sql



3,--          ,
mysql -uroot -p < /home/yc/py08/04-mysql/ops.sql 


4,--       drop     binlog    
mysql -uroot -p ops < /home/yc/py08/04-mysql/002bin.sql