mysql 完整性备份 及备份注意事项
mysql 完整性备份 及备份注意事项
describe user; //查看表
describe mysql.user // describe 可以简写成desc
create databese abc; //创建数据库
show databases; 相当于是/var/lib/mysql/这里面会出现一个文件夹,当然也可以直接这里面创建一个库比如cloud ,在show databases;中就可以查看到。唯一不同的是权限不一样。一个是root 一个是mysql.
use abc //切换到库
create table users(user_name char(18) not null, user_passwd char(48) default ' ', primary key(user_name) );
show tables ;
drop table users;
drop database abc;
---------------------------------
insert into 表名(字段1,字段2,...)vlaues ( 字段1的值,字段2的值,.....) //表中插入值
insert into users(user_name,user_passwd) values(‘zhangsan’,'123456') //插入数据
insert into users(user_name,user_passwd) values(‘zhang’,passwd'123456')//加密存储
---------------------------------
select * from users; //查看表 *代表所有表
select user_name from users; //查看某一列的数据
select user_name,user_password from users;
select * from users where user_name='zhangsan';
describe mysql.user // describe 可以简写成desc
create databese abc; //创建数据库
show databases; 相当于是/var/lib/mysql/这里面会出现一个文件夹,当然也可以直接这里面创建一个库比如cloud ,在show databases;中就可以查看到。唯一不同的是权限不一样。一个是root 一个是mysql.
use abc //切换到库
create table users(user_name char(18) not null, user_passwd char(48) default ' ', primary key(user_name) );
show tables ;
drop table users;
drop database abc;
---------------------------------
insert into 表名(字段1,字段2,...)vlaues ( 字段1的值,字段2的值,.....) //表中插入值
insert into users(user_name,user_passwd) values(‘zhangsan’,'123456') //插入数据
insert into users(user_name,user_passwd) values(‘zhang’,passwd'123456')//加密存储
---------------------------------
select * from users; //查看表 *代表所有表
select user_name from users; //查看某一列的数据
select user_name,user_password from users;
select * from users where user_name='zhangsan';
desc mysql.user
select Host,User,Password from mysql.user;
select Host,User,Password from mysql.user where Host='127.0.0.1'; //条件查询
----------------------------------
update users set user_passwd=passwd('654321') where user_name='zhangsan';
select * from users;
-----------------------------------
use mysql
select user,password from usser;
update user set password=password('123123') where user='root';
select user,password from user;
flush privileges;
-----------------------------------
delete from users where user_name='zhaosi';
select Host,User,Password from mysql.user;
select Host,User,Password from mysql.user where Host='127.0.0.1'; //条件查询
----------------------------------
update users set user_passwd=passwd('654321') where user_name='zhangsan';
select * from users;
-----------------------------------
use mysql
select user,password from usser;
update user set password=password('123123') where user='root';
select user,password from user;
flush privileges;
-----------------------------------
delete from users where user_name='zhaosi';
----------------------------------------
案例:grant select on abc.* to 'teacher'@'localhost' identified by '123456';
使用grant 语句授权的用户记录,会保存到mysql库的user,db,host,tables_priv 等相关表中,无需书信授权表即可生效。
案例:grant select on abc.* to 'teacher'@'localhost' identified by '123456';
使用grant 语句授权的用户记录,会保存到mysql库的user,db,host,tables_priv 等相关表中,无需书信授权表即可生效。
==============================
常见的备份方法
mysqldump(备份工具)
-----------------------------
常见的备份方法
mysqldump(备份工具)
-----------------------------
MySQL的日志种类
错误日志
二进制日志(常用)
中继日志
查询日志
慢查询日志(SQL性能优化)
事务日志
-----------------
Percona XtraBackup (Mysql热备份软件)
------------------------
思考类问题:
公司数据库的总数居量多大?
每天的增长量多大?
备份的策略?
备份的数据量?
备份的时长?
----------------------------------
MySQL完全备份操作
错误日志
二进制日志(常用)
中继日志
查询日志
慢查询日志(SQL性能优化)
事务日志
-----------------
Percona XtraBackup (Mysql热备份软件)
------------------------
思考类问题:
公司数据库的总数居量多大?
每天的增长量多大?
备份的策略?
备份的数据量?
备份的时长?
----------------------------------
MySQL完全备份操作
源码安装的位置 /usr/local/mysql/data
rpm包安装的位置/var/lib/mariadb/
开启服务:
systemctl start mariadb
mysqladmin -u root -pssword 123456
进入数据库进行模拟数据
mysql -uroot -p123456
create database auth;
use auth;
create table user(name char(10) not null ,ID int(48));
insert into user values('crushlinux','123');
select * from user;
----
对上述数据进行备份
首先进行停库
systemctl stop mariadb
ls /var/lib/mysql/ //擦好看auth
打包压缩
rpm -q xz //xz是最常用的
yum -y install xz
mkdir backup
tar Jcf backup /mysql_all-$(date+%F).tar.xz /var/lib/mysql/
ls -l backup/
模拟数据丢失
删除auth
rm -rf /var/lib/mysql/auth/
ls /var/lib/mysql/
systemctl start mariadb
mysql -uroot -p123456
show databases;
---------
恢复数据
mkdir restore
tar xf backup/mysql_..... -C restore/
然后查看
mv auth/ /var/lib/mysql
然后在数据库中进行查看
========================
使用mysqldump 备份(常用)
mysql 中自带的有这个工具
这个工具会将mysql的数据全部导出成sql脚本,在需要升级mysql服务器时,可以先使用mysqldump命令将原有库信息导出,然后直接在升级后的mysql服务器中导入即可
【1】备份单个库
格式:mysqldump -u 用户名 -p 密码[选项] --databeses[数据库名]>/备份路径/备份文件名
musqldump -uroot -p123456 --databases auth > backup/auth-$(date+%Y%m%d).sql
rpm包安装的位置/var/lib/mariadb/
开启服务:
systemctl start mariadb
mysqladmin -u root -pssword 123456
进入数据库进行模拟数据
mysql -uroot -p123456
create database auth;
use auth;
create table user(name char(10) not null ,ID int(48));
insert into user values('crushlinux','123');
select * from user;
----
对上述数据进行备份
首先进行停库
systemctl stop mariadb
ls /var/lib/mysql/ //擦好看auth
打包压缩
rpm -q xz //xz是最常用的
yum -y install xz
mkdir backup
tar Jcf backup /mysql_all-$(date+%F).tar.xz /var/lib/mysql/
ls -l backup/
模拟数据丢失
删除auth
rm -rf /var/lib/mysql/auth/
ls /var/lib/mysql/
systemctl start mariadb
mysql -uroot -p123456
show databases;
---------
恢复数据
mkdir restore
tar xf backup/mysql_..... -C restore/
然后查看
mv auth/ /var/lib/mysql
然后在数据库中进行查看
========================
使用mysqldump 备份(常用)
mysql 中自带的有这个工具
这个工具会将mysql的数据全部导出成sql脚本,在需要升级mysql服务器时,可以先使用mysqldump命令将原有库信息导出,然后直接在升级后的mysql服务器中导入即可
【1】备份单个库
格式:mysqldump -u 用户名 -p 密码[选项] --databeses[数据库名]>/备份路径/备份文件名
musqldump -uroot -p123456 --databases auth > backup/auth-$(date+%Y%m%d).sql
grep -Ev "^/|^$|^-" backup/auth-2019..sql //查看压缩的内容
【2】对多个库进行备份
格式:mysqldump -u 用户名 -p 密码[选项] --databeses 库名1[库名2]...>/备份路径/备份文件名
musqldump -uroot -p123456 --events --databases mysql auth > backup/mysql+auth-$(date+%Y%m%d).sql
【3】对所有库进行完全备份
格式:mysqldump -u 用户名 -p 密码[选项] --opt --all-databases > /备份路径备份文件名
musqldump -uroot -p123456 --events --opt --all-databases >backup/mysql_all.$(date+%Y%m%d).sql
【4】对表进行完全备份
格式:mysqldump -u 用户名 -p 密码[选项] 数据库名 表名 > /备份路径/备份文件名
mysqldump -uroot -p123456 auth user > backup/auth_user-$(date +%Y%m%d).sql
【5】对表结构的备份(面试)
格式:mysqldump -u用户名 -p [密码] -d 数据库名 表名 > /备份路径/备份文件名
mysqldump -uroot -p123456 -d mysql user > backup/desc_mysql_user-$(date +%Y%m%d).sql
==============================
使用mysqldump备份后,恢复数据库
1、source命令
登录到MySQL数据库,执行source 备份sql脚本路径
mysql -uroot -p123456
show databases;
drop database auth;
source backup/mysql_all.20181214.sql
show databases;
2、mysql命令
格式:
mysql -u用户名 -p [密码] < 库备份脚本的路径
mysql -u用户名 -p [密码] 库名 < 表备份脚本的路径
mysql -uroot -p123456 -e 'show databases; ///-e可以直接执行语句
[root@localhost ~]# mysql -uroot -p123456 -e 'drop database auth;'
[root@localhost ~]# mysql -uroot -p123456 < backup/mysql_all.20181214.sql
[root@localhost ~]# mysql -uroot -p123456 -e 'show databases;'
格式:mysqldump -u 用户名 -p 密码[选项] --databeses 库名1[库名2]...>/备份路径/备份文件名
musqldump -uroot -p123456 --events --databases mysql auth > backup/mysql+auth-$(date+%Y%m%d).sql
【3】对所有库进行完全备份
格式:mysqldump -u 用户名 -p 密码[选项] --opt --all-databases > /备份路径备份文件名
musqldump -uroot -p123456 --events --opt --all-databases >backup/mysql_all.$(date+%Y%m%d).sql
【4】对表进行完全备份
格式:mysqldump -u 用户名 -p 密码[选项] 数据库名 表名 > /备份路径/备份文件名
mysqldump -uroot -p123456 auth user > backup/auth_user-$(date +%Y%m%d).sql
【5】对表结构的备份(面试)
格式:mysqldump -u用户名 -p [密码] -d 数据库名 表名 > /备份路径/备份文件名
mysqldump -uroot -p123456 -d mysql user > backup/desc_mysql_user-$(date +%Y%m%d).sql
==============================
使用mysqldump备份后,恢复数据库
1、source命令
登录到MySQL数据库,执行source 备份sql脚本路径
mysql -uroot -p123456
show databases;
drop database auth;
source backup/mysql_all.20181214.sql
show databases;
2、mysql命令
格式:
mysql -u用户名 -p [密码] < 库备份脚本的路径
mysql -u用户名 -p [密码] 库名 < 表备份脚本的路径
mysql -uroot -p123456 -e 'show databases; ///-e可以直接执行语句
[root@localhost ~]# mysql -uroot -p123456 -e 'drop database auth;'
[root@localhost ~]# mysql -uroot -p123456 < backup/mysql_all.20181214.sql
[root@localhost ~]# mysql -uroot -p123456 -e 'show databases;'
[root@localhost ~]# mysql -uroot -p123456 -e 'drop table auth.user;'
[root@localhost ~]# mysql -uroot -p123456 auth< backup/auth_user-20181214.sql
[root@localhost ~]# mysql -uroot -p123456 -e 'select * from auth.user;'
==============================
MySQL备份思路
1、定期实施备份,指定备份计划或策略,并严格遵守
2、除了进行完全备份,开启MySQL服务器的binlog日志功能是很重要的(完全备份加上日志,可以对MySQL进行最大化还原)
3、使用统一和易理解的备份名称,推荐使用库名或者表名加上时间的命名规则,如mysql_user-20181214.sql,不要使用backup1或者abc之类没有意义的名字。
[root@localhost ~]# mysql -uroot -p123456 auth< backup/auth_user-20181214.sql
[root@localhost ~]# mysql -uroot -p123456 -e 'select * from auth.user;'
==============================
MySQL备份思路
1、定期实施备份,指定备份计划或策略,并严格遵守
2、除了进行完全备份,开启MySQL服务器的binlog日志功能是很重要的(完全备份加上日志,可以对MySQL进行最大化还原)
3、使用统一和易理解的备份名称,推荐使用库名或者表名加上时间的命名规则,如mysql_user-20181214.sql,不要使用backup1或者abc之类没有意义的名字。
4、定期抽查备份的可靠性,比如做还原测试或者检查文件大小等方式。
5、通过异地或者跨机房等方式来存放备份数据,防止源数据和备份文件一起损坏。
==============================
==============================