码迷,mamicode.com
首页 > 数据库 > 详细

MySQL数据管理5

时间:2017-12-21 17:18:47      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:数据库中日志文件   主从同步   

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;


MySQL数据管理5

标签:数据库中日志文件   主从同步   

原文地址:http://blog.51cto.com/13513556/2052955

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!