mysql备份恢复

1.普通备份

mysql
改密码:
mysql-nt  --skip-grant-tables
use mysql;
UPDATE user SET password=PASSWORD("123456") WHERE user='root';
flush  privileges;
---------------------------
#创建用户root并赋予权限
use mysql;
grant all on *.* to root@'%' identified by 'password';
flush privileges;

-----------------------给用户kkk赋予权限
use mysql;
grant select,update,delete,insert  on dmc_db.*  to  kkk;
GRANT all privileges ON *.* TO tongbu@'172.18.3.3' IDENTIFIED BY '123456'; 
flush privileges;
-------------------------mysql同步账号
GRANT REPLICATION SLAVE,FILE ON *.* TO 'sync'@'%' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;

CHANGE  MASTER TO  
MASTER_HOST='192.168.0.133',
MASTER_USER='sync',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',  
MASTER_LOG_POS=312;
-------------------------------
backup
mysqldump -uroot -p   databases > datas.sql
mysqldump -uroot -p   databases tables > tables.sql

resover恢复
mysql  -uroot -p   databases < datas.sql
----------------------
mysql>use databases;
mysql>source  ./datas.sql

#导出数据库结构
mysqldump -u root -p -d --add-drop-table databases_jg >data_jg.sql
 -d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table 
----------------------------------
mysqladmin  -uroot -p123456  password  '1235468979'    #p和密码不要分开
---------------------------------
>flush tables with read lock;
root#mysqldump data >data.sql
>unlock tables;
***********************************************************************************
#一下备份可以查询到最后一次的log-bin文件和POS,方便做主从
#mysqldump -uroot -p --lock-tables 
  --events --triggers --routines --flush-logs 
  --master-data=2 --databases bbs > db.sql
#grep -i "change master" db.sql 
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=245;

2.innobackupex备份

安装innobaupex的依赖:

APT
$ apt-get install percona-xtrabackup
或者
$ apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
$sudo vi /etc/apt/sources.list
deb http://repo.percona.com/apt VERSION main
deb-src http://repo.percona.com/apt VERSION main

$ apt-get update
$ apt-get install percona-xtrabackup
-----------------------------------------------------------
YUM
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
yum  list |grep percona
yum install  percona-xtrabackup-21.x86_64

#yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes  perl-DBD-MySQL   perl-IO-Socket-SSL

 #rpm -ivh percona-xtrabackup-2.2.11-1.el6.x86_64.rpm

jk409#压缩备份
#innobackupex  --user=root --host=127.0.0.1 --password=123456 --port=3306  --parallel=4 --throttle=400 --stream=tar /data/backup  2>  /data/backup/data2.log 1>/data/backup/datas.tar
#innobackupex  --user=root --defaults-file=/etc/my.cnf  --stream=tar  /data/backup/ | gzip > /data/backup/`date +%F_%H-%M-%S`.tar.gz

jk409#非压缩备份
#innobackupex  --user=root --host=127.0.0.1 --password=123456 --port=3306  --parallel=4 --throttle=400 /data/backup  2>  /data/backup/data2.log
#innobackupex  --user=root --password=123456 --defaults-file=/etc/my.cnf   /data/backup/  #本地全库备份
#innobackupex  --user=root --password=123456 --defaults-file=/etc/my.cnf  --database=test /data/backup/   #本地单库test备份
#innobackupex --user=root --password=123456  --socket=/var/lib/mysql/mysql.sock  --defaults-file=/etc/my.cnf  /data/backup
#----------------------------------------------------------------------
#jk409#恢复注意:先停止数据库,情况datadir目录的所有文件,然后如下:
# /etc/init.d/mysqld stop      //停掉mysql  
# mv /var/lib/mysql /var/lib/mysql_bak   //数据目录备份  
# mkdir -p /var/lib/mysql  //重建数据目录  
      
//--apply-log选项的命令是准备在一个备份上启动mysql服务  
# innobackupex --defaults-file=/etc/my.cnf  --apply-log /data/backup/2015-05-29_11-36-22  
      
//--copy-back 选项的命令从备份目录拷贝数据,索引,日志到my.cnf文件里规定的初始位置  
# innobackupex --defaults-file=/etc/my.cnf --copy-back /data/backup/2015-05-29_11-36-22  
      
# chown -R mysql.mysql /var/lib/mysql  //改变文件所属  
# /etc/init.d/mysqld restop  //启动mysql
#----------------------------------------------------------------------------
#增量备份:
#注意:(innobackupex 增量备份仅针对InnoDB这类支持事务的引擎,对于MyISAM等引擎,则仍然是全备。
#--incremental-basedir指向全备目录,--incremental指向增量备份的目录。)
#第一次全备
#innobackupex  --user=root --password=123456 --defaults-file=/etc/my.cnf   /data/backup/ 
#第一次增量备份(第一次全备份的基础上备份最新数据)
#innobackupex  --user=root --password=123456 --defaults-file=/etc/my.cnf  \
 --incremental /data/backup/zl  --incremental-basedir=/data/backup/2015-5-19_19-05-25
#第二次增量备份(第一次增量备份的基础上备份)
#innobackupex  --user=root --password=123456 --defaults-file=/etc/my.cnf  \
--incremental /data/backup/zl   --incremental-basedir=/data/backup/zl/2015-5-19_21-25-23 

#增量恢复:
#(--apply-log :创建新的事务日志,从backup-my.cnf文件中读取innodb配置信息。
#--redo-only:只读已提交的事务,在最后一次增量合并时,不需要填写这个参数。)
#先停止数据库,备份或重命名数据库数据目录
mkdir /var/lib/mysql
innobackupex --defaults-file=/etc/my.cnf  --apply-log  --redo-only /data/backup/2015-5-19_19-05-25
innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only  /data/backup/2015-5-19_19-05-25  \
--incremental-dir=/data/backup/zl/2015-5-19_21-25-23 
innobackupex --defaults-file=/etc/my.cnf --apply-log    /data/backup/2015-5-19_19-05-25  \
--incremental-dir=/data/backup/zl/2015-5-19_22-25-00
innobackupex --defaults-file=/etc/my.cnf --copy-back   /data/backup/2015-5-19_19-05-25
chown -R mysql:mysql   /var/lib/mysql
/etc/init.d/mysql start

最后innobackupex备份错误:

InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes 
删除数据目录下的ib_logfile×(建议删除前先备份下)
编辑my.cnf,添加innodb_log_file_size = 256M
重启数据库,在备份就正常了

3.主、主从备份

[mysqld]
datadir=D:/Program Files/MariaDB 10.0/data
bind-address=0.0.0.0
port=3306
sql_mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"
default_storage_engine=innodb
character_set_server=utf8
server-id=2
log_bin= mysql-bin
log-slave-updates  
#的把前面一台(id=1)更新的记录到本地(id=2)数据库的日志,同步给后面的服务器(id=3),
否则无法把更新的数据同步给后面的id=3
slave-skip-errors=all 
#跳过错误的记录,继续执行后面的操作,否则,遇错后同步进程会关闭
innodb_buffer_pool_size=500M
#buffer_pool_size设置物理内存50%-80%
innodb_log_file_size=200M
innodb_log_buffer_size=10M
innodb_flush_log_at_trx_commit=1
sync_binlog=1
#若是主主同步:注意保证 自增长数据不同 或者 把它逻辑备份 或 不同时使用2个数据库 就不用设置了
#A,1,3,5....
#auto_increment_offset = 1
#auto_increment_increment = 2
#B:2,4,6.....
#auto_increment_offset = 2
#auto_increment_increment = 2
[client]
port=3306
#-----------------------------------------------------
mysql>GRANT REPLICATION SLAVE,FILE ON *.* TO 'sync'@'%' IDENTIFIED BY '123456';
mysql>FLUSH PRIVILEGES;
---------------------------------
mysql>stop slave;  #关闭slave
mysql>CHANGE  MASTER TO  
MASTER_HOST='192.168.0.106',
MASTER_USER='root',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000017',  
MASTER_LOG_POS=326;
mysql>start slave; #开启slave


你可能感兴趣的:(mysql备份恢复)