MySQL數據管理5

llbakt2.sh 功能:

把服務器上userdb庫t2表的所有記錄備份到本機/mybak文件


夾裏。使用系統日期做備份文件名例如 2017-05-25-t2.sql


mkdir  /shell

vim  /shell/allt2bak.sh

#!/bin/bash

day=`date +%Y-%m-%d`

if  [  ! -e  /mybak  ];then

   mkdir   /mybak

fi

mysqldump    -hlocalhost   -uroot   -p123123  --flush-


logs  userdb t2  >   /mybak/$day-t2.sql

:wq


chmod  +x    /shell/allt2bak.sh    &>  /dev/null


 /shell/allt2bak.sh 

ls  /mybak/*.sql


crontab  -e

00  18    *   *  1  /shell/allt2bak.sh  &>  /dev/null

00  18    *   *  2-7   /shell/baknewbinlog.sh

                                            備份每天新生成的binlog日誌文件

:wq


systemctl   status   crond

++++++++++++++++++++++++++++++

day05

實時增量備份:啓用mysql服務的binlog日誌實現

1 binlog日誌介紹: 也叫二進制日誌,是mysql服務日誌文件


一種,記錄客戶端連接數據庫服務器後,執行的除查詢之外的


SQL命令。


查詢包括:select    show     desc 


2  啓用binlog日誌

vim /etc/my.cnf

[mysqld]

server_id=12

log_bin

binlog_format="mixed"

:wq

        

#systemctl  restart  mysqld


ls /var/lib/mysql/                

localhost-bin.000001  日誌文件

localhost-bin.index      日誌索引文件


查看binlog日誌文件的內容

mysqlbinlog    binlog日誌文件


自定義binlog日誌文件名和存儲目錄

#mkdir  /logdir

#chow mysql  /logdir

#vim /etc/my.cnf

[mysqld]

server_id=12

#log_bin

log_bin=/logdir/plj

binlog_format="mixed"

:wq

#systemctl  restart  mysqld

ls /logdir/


3 執行binlog日誌文件裏的SQL命令恢復數據。


命令格式

mysqlbinlog  選項   binlog日誌文件   |  mysql  -uroot  -


p123123


選項

pos節點

--start-position=數字

--stop-position=數字


時間點   

--start-datetime="yyyy-mm-dd  hh:mm:ss"

--stop-datetime="yyyy-mm-dd  hh:mm:ss"


mysqlbinlog   --start-position=1400    --stop-


position=1816  /logdir/plj.000001    | mysql  -uroot -


p123123   



手動創建新的binlog日誌文件

# systemctl  restart mysqld


mysql>  flush  logs;


# mysql -uroot -p123123 -e "show databases"


#mysqldump  -uroot -p123123  --flush-logs  userdb  > 


/opt/userdb.sql

 

刪除已有的binlog日誌文件?


把編號之前的日誌文件刪除

mysql> purge  master  logs  to  "binlog文件名";

mysql>purge  master  logs  to  "plj.000003";


刪除所有的binlog日誌文件,重新生成第一個日誌文件

mysql> reset   master ; 


+++++++++++++++++++++++++++++

安裝第3方軟件做增量備份與恢復

# rpm -q  perl-DBD-MySQL  perl-Digest-MD5

# rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm

# rpm -ivh percona-xtrabackup-24-2.4.7-


1.el7.x86_64.rpm


命令格式

#innobackupex  <選項>


db105.t1   (200-700)

#innobackupex --user root  --password  123123  --


databases="db105.t1"   /fullbak   --no-timestamp


db105.t1(10 -- 777)

# innobackupex --user root  --password  123123  --


databases="db105.t1"  --incremental  /new1dir  --


incremental-basedir=/fullbak --no-timestamp 


db105.t1(7 -- 3333)

# innobackupex --user root  --password  123123  --


databases="db105.t1"   --incremental /new2dir   --


incremental-basedir=/new1dir   --no-timestamp



# cp -r /var/lib/mysql/mysql   /opt/mysql.bak


增量恢復數據

1 默認數據丟失

rm  -rf /var/lib/mysql

mkdir /var/lib/mysql 

chown  mysql:mysql  /var/lib/mysql


2 恢復日誌文件

#innobackupex --user root --password 123456 --


databases="db105.t1" --apply-log --redo-only  /fullbak  

                                          

#innobackupex --user root --password 123456 --


databases="db105.t1"   --apply-log --redo-only    


/fullbak   --incremental-dir="/new1dir" 


#innobackupex --user root --password 123456 --


databases="db105.t1"   --apply-log --redo-only    


/fullbak   --incremental-dir="/new2dir" 


3 把備份目錄下文件拷貝回數據庫目錄下

# innobackupex --user root --password 123456 --


databases="db105.t1" --copy-back /fullbak

# cp -r   /opt/mysql.bak /var/lib/mysql/mysql

#chown  -R mysql:mysql  /var/lib/mysql/

4 重啓數據庫服務

#systemctl restart  mysqld

5 登錄查看數據

mysql   -uroot  -p123123

mysql> select  * from db105.t1;


備份過程

lsn   日誌序列號 

數據庫目錄下

ib_logfile0

ib_logfile1

ibdata1


備份目錄下

xtrabackup_checkpoints

xtrabackup_logfile

ibdata1



#systemctl  stop mysqld

#mv /etc/my.cnf /etc/my.cnf.bak

#rm -rf /var/lib/mysql

#mysql_install_db  --datadir=/var/lib/mysql --


user=mysql

#rm -rf /var/lib/mysql/mysql/

#cp -r /opt/mysql.bak/ /var/lib/mysql/mysql

# chown  -R mysql:mysql /var/lib/mysql

# systemctl  status mysqld


恢復完全備份文件中的某個表


mysql> drop table  bbsdb.a;


#innobackupex --user root --password 654321 --


databases="bbsdb" --apply-log --export /allbak  //導出


表信息


mysql> create  table gamedb.a(id int); //創建表


mysql> alter  table bbsdb.a  discard  tablespace;  //刪除


表空間


mysql> system cp /allbak/bbsdb/a.{ibd,cfg,exp} 


/var/lib/mysql/bbsdb   //拷貝表信息文件


mysql> system chown mysql:mysql 


/var/lib/mysql/bbsdb/a.*   //修改所有者


mysql> alter  table  bbsdb.a  import  tablespace;  //導入


表空間


mysql> select  * from  gamedb.a;

++++++++++++++++++++++++++++++++++++

MySQL 主從同步

12

主數據庫服務器的配置

mysql> grant  replication  slave  on  *.*  to   plj@"%"   


identified by "123456";

vim /etc/my.cnf

[mysqld]

server_id=12

log_bin=master12

binlog_format="mixed"

:wq


# systemctl  restart mysqld


mysql> show master status;



11

配置從數據庫服務器

# mysql -h192.168.4.12  -uplj  -p123456


vim /etc/my.cnf

[mysqld]

server_id=11

log_bin=slave11

:wq


# systemctl  restart mysqld


mysql> show slave status;

Empty set (0.00 sec)


mysql> change  master  to   


master_host="192.168.4.12",master_user="plj",master_


password="123456",master_log_file="master12.000001


",master_log_pos=154;

mysql> start  slave;

mysql> show  slave status\G;

Slave_IO_Running: Yes

Slave_SQL_Running: Yes


測試主從同步配置

12

mysql -uroot -p123123

mysql> create  database  db105;create  table  db105.a


(id int); insert into  db105.a values(100);


11

mysql -uroot -p654321

mysql>select  * from db105.a;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章