Mysql的备份,权限与日志
1》Mysql的数据备份
mysqldump 工具
--single-transaction
该选项导出数据之前提交一个BEGIN SQL语句,不会阻塞任何应该程序而且能保证导出数据时的一致性状态。
--flush-logs
开始导出之前刷新日志,请注意(选项--databases或者--all-databases),将会逐个数据库刷新日志,除使用--lock-all
-tables 或者--master-data外,这种情况下日志将会被刷新一次,相应的所有表同时被锁定。因此,如果打算同时
导出和刷新日志应该使用--lock-all-tables或者-master-data和--flush-logs
--routines
导出存储过程以及自定义函数
--evnets
导出事件
--master-data
该项目binlog的位置和文件追加到输出文件中,如果1,将会输出CHANGE MASTER命令,输出的CHANGE MASTER命令前添加注释,该选项将打开--lock-all- tables 选项,除非--single-transactoin也被指定(在这种情况下,全局读锁在开始导出时获得很短的时间,其它内容 参考下面的--single-transaction选项)
例子:
mysqldump -uroot -p123456 -h 192.168.1.201 -P4421 zytest --single-transaction --flush-logs --routines --evnets--master-data=2 >zytest.sql;
企业正式环境备份参数,不同的企业业务不一样,请根据实际业务进行调整
2》本地使用root用户备份
(1)请备份zytest库下面的vendors这个表
mysqldump -uroot -p123456 zytest vendors >vendors.sql
(2)请备份整个zytest库(备份一个数据库,--databases可以省略)
mysqldump -uroot -p123456 --databases zytest >zytest.sql
(3)备份多个库分别是gongda 和zytest 向备份多个库 --databases
mysqldump -uroot -p123456 --databases zytest gongda >backup.sql
(4)备份所有的库
mysqldump -uroot -p123456 --all-databases >all.sql
******在innodb存储引擎禁止直接备份整个datadir目录,但是Myisam的可以支持。
3》数据恢复source工具,mysql工具
source工具恢复方式
#mysql -uroot -p123456
mysql>source /opt/test.sql
mysql工具
#mysql -uroot -p123456 < /opt/zytest.sql
4》数据库迁移注意要点:
所谓的数据库迁移,就是指数据库从一个系统迁移到另外一个系统上,数据库迁移的原因是多种多样的,肯能是硬件升级或者部署其它的业务 或者升级了mysql数 据库甚至选择其它的数据库都是有可能的。
迁移注意事项:
(1) 相同的版本可以迁移
(2) 注意版本所使用的引擎
(3) 低版本可以向高版本迁移,高版本兼容低版本数据库
(4) 高版本不能向低版本迁移,造成的数据不兼容的情况
(5) 在迁移时请注意数据导出和数据备份,出现迁移失败,要立即启动备用方案,保证公司业务的连续性
(6) 在数据迁移时,请先写好的你的技术文档,在本地做了完整的测试以后 方可尝试迁移
(7) 对数据迁移的操作正常来说,选择用户量最小的时候,大部分操作都是在凌晨1-4之间做迁移
(8) DBA在做数据迁移的时候,需要相关业务人员联合支持(业务相关人员,主程序员、测试人员、市场人员、产品人员、运维人员 至少需要1个)保证数据迁移后 的安全性和稳定性.
===========================权限:
1》权表介绍:
安装mysql时自动生成一个名为mysql的数据,mysql数据库下面存储都是权限表,用户登录以后,mysql数据系统会根据 这些权限表的内容给每个用户赋予相应的 权限,其中最重要的表为:mysql中存在4个控制权限的表,分别为user表,db表,tables_priv表,columns_priv表
。
• user表范围列决定是否允许或拒绝到来的连接。对于允许的连接,user表授予的权限指出用户的全局(超级用户)权限,这些权限适用于服务器上的all数据库;
• db表范围列决定用户能从哪个主机存取哪个数据库,权限列决定允许哪个操作,授予的数据库级别的权限适用于数据库和它的表;
• tables_priv和columns_priv表类似于db表,但是更精致:它们在表和列级应用而非在数据库级。授予表级别的权限适用于表和所有它的列,授予列级别的权限只适 用于专用列。
• procs_priv表适用于保存的程序,授予程序级别的权限只适用于单个程序。
1>user表
user表用户包括了Host,User,Password,分别表示主机名、用户名、密码。
select Host,User,Password from user;
2>db表
db表Mysql数据库中非常重要的权限表,db表中存储了某个用户对一个数据库的权限。
db表的用户列有3个字段,分别是 Host,Db和User,这个3个字段表示主机名、数据库名、用户名:
host表的用户列有两个字段分别是Host和Db,这两个字段表示:主机名、数据库名
Host表是db表的扩展,如果db表中找不到Host字段值。就需要到host表中去找。这个host表很少用到,同行db表满足需求了。
user权限表:记录允许连接到服务器的用户帐号信息,里面的权限是全局级的。
db权限表:记录各个帐号在各个数据库上的操作权限。
table_priv权限表:记录数据表级的操作权限。
columns_priv权限表:记录数据列级的操作权限。
host权限表:配合db权限表对给定主机上数据库级操作权限作更细致的控制,这个权限表不受GRANT和REVOKE语句的影响。
2》用户登录和退出mysql服务器:
mysql命令语句用法:
-h 参数后面接主机或者主机IP hostname为主机名,hostIP为主机IP
-P 参数后面接Mysql服务的端口号,通过指定的端口,
-u 参数后面链接用户,username为用户名
-p 参数会提示密码
DatabaseName 参数指明登录到哪一个数据库中,
如果没有该参数,会直接登录到Mysql数据库中.然后可以使用USE命令来选择书库-e 参数可以可以直接加SQL语句,登录MYSQL服务器以后即可执行这个SQL语 句,然后退出Mysql服务器;
3》创建和删除普通用户
1>新建普通用户:
create user ‘用户名称’@’访问地址本地还是远程?’indentified by ‘用户密码’
create user ‘test1’@’localhost’identified by ‘test1’;
grant 用户的权限(查询插入、更新等) on 在那个数据库的表 to ‘用户名称’@’授权方位地址’ identified by ‘用户密码’
grant select on *.* to ‘test1’@’localhost’ identified by ‘test1’
2>删除普通用户:
DROP USER ‘user’@’localhost’
drop user ‘test1’@’localhost’
delete from mysql.user where host=’localhost’ and User=’test1’;
4》普通用户和root用户的的密码管理:
操作系统用的是root用户,数据库系统用也是root用户,这两用户不是一起的;
1>Mysqladmin命令来修改root密码,只能超级用户来修改超级用户密码
mysqladmin –u username –p password ‘new_password’;
mysqladmin –u root –p password ‘123456’
2>普通用户如何修自己的密码:password(‘strt’)函数加密
mysql –u test1 –p 123456
>set password=password(‘zytest123’);
3>root用户密码丢失怎么办?
使用–skip-grant-tables选项启mysql服务:
/etc/init.d/mysqld start –skip-grant-tables 这个时候就不需要密码了。
>update mysql.user set password=password(‘123456’) where User=’root’ and Host=’localhost’;
>flush privileges;刷新(加载)权限
4>增加远程超极管理用户
>update table user set host='%' where user='root';
> grant all privileges on *.* to admin@'%' identified by '123456' with grant option;
>flush privileges;
5》DBA SQLyog工具使用
以上所有的权限都可以通过工具来进行分配和使用。
SQLyog-8.7.0-4
注册码:
Name: Any
Registration Code: 26f359fc-e3f6-4727-8af1-72a1a4a0819d
备份数据库的表时可能会遇到以下问题:
mysqldump: Couldn't execute 'SET OPTION SQL_QUOTE_SHOW_CREATE=1': You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION SQL_QUOTE_SHOW_CREATE=1' at line 1 (1064)
解决方法:
mysqldump的版本比现在mysql 数据库的版本低
cp /usr/local/mysql/bin/mysqldump /usr/bin/mysqldump
=========================Mysql日志:
mysql日志是记录mysql数据库的日常操作和信息的文件,Mysql中日志可以分为:
二进制日志
错误日志
通用查询日志
慢查询日志
分析这些日志可以了解整个mysql日志的运行情况。
mysql日志可以分为4种,
二进制日志:以二进制文件的形式记录了数据库中,但是不记录查询语句
错误日志:记录用户登录和记录查询的信息
慢查询日志:记录执行时间超过指定时间的操作.
通用查询日志:用查询日志用来记录用户的所有操作,包括启动和关闭MySQL服务、更新语句、查询语句等
除了二进制日志外,其他日志都是文本文件,日志文件通常存储在Mysql数据库目录下。
1》二进制日志:
二进制日志也就是变更日志(updatelog),主要用于记录数据库的变化情况,通过二进制日志可以查询Mysql数据库进行了那些改变;
1>启动二进制日志
默认情况下,二进制功能是关闭的,我们编辑my.cnf
log-bin=/data/masterlog
二进制日志与数据库数据最好不要放到同一块硬盘上面,如果一块硬盘坏掉了,另外一块硬盘存储二进制日志,我们可以通过二进制来恢复数据;
2>删除所有二进制
mysql->reset master;
3>指定删除某范围二进制日志
mysql->purge master logs to ‘mylog_0000021’ 删除从000001到00000021二进制日志
4>根据创建时间来删除日志
mysql->purge master before‘2010-12-10 16:00:00’ 删除2010-12-10 16:00:00 之前的二进制日志。
5>mysqlbinlog命令来还原操作,还原日志从小到大
mysqlbinlog mylog.000001 | mysql –uroot –p123456
mysqlbinlog mylog.000002 | mysql –uroot –p123456
mysqlbinlog mylog.000003 | mysql –uroot –p123456
mysqlbinlog mylog.000004 | mysql –uroot –p123456
mysqlbinlog mylog.000005 | mysql –uroot –p123456
6>暂停二进制功能
mysql->set sql_log_bin=0; 暂停
mysql->set sql_log_bin=1; 启动
7>重新刷新二进制日志
mysqladmin –u root –p flush-logs 系统会启用一个新的二进制日志文件
flush-logs正确来说应该是刷新所有的日志。
8>验证二进制日志文件pos号来恢复
mysql>reset master; 清空所有的二进制日志
mysql>create database gongdatest;
mysql>use mysql;
mysql>create databse alvin;
mysql>drop database gongdatest;
# mysqlbinlog masterlog.000001 开始查看二进制文件的内容,
我们可以看到
at 120 为pos号的起点
at 232 为pos号的结束
# mysqlbinlog --start-position="120" --stop-position="232" masterlog.000001 查看一下是否正确,
# mysqlbinlog --start-position="120" --stop-position="232" masterlog.000001 | mysql -uroot –p开始恢复
9>二进制日志文件时间点来恢复
# mysqlbinlog masterlog.000001 开始查看二进制文件的内容,
我们可以看到其始时间点为:21:57:55,其结束时间点为:21:58:07,通过时间点恢复
# mysqlbinlog –start-datetime=”2016-08-13 21:57:55”–stop-datetime=”2016-08-13
21:58:07” masterlog.000001 查看输出的是否正确?
# mysqlbinlog –start-datetime=”2016-08-13 21:57:55”–stop-datetime=”2016-08-13
21:58:07” masterlog.000001 | mysql –uroot –p 开始恢复数据
2》错误日志:
在mysql数据库中,错误日志功能默认是开启的,一般存储在mysql数据库的文件夹下面,错误日志通常称为hostname.err 其中hostname表示mysql服务器的主机名,错误日志可以通过my.cnf 中log-error选入来设置
log-error=/data/master.err
3》通用查询日志:
默认情况下,功能日志是关闭的,通过my.cnf来开启日志:
log=/data/acces.log
用户所有的操作记录到通用查询日志当中.
删除通用查询日志两种方法:
1>删除源文件,使用mysqladmin 重新生成一个新的文件
rm acces.log && mysqladmin –u root –p flush-logs
2>直接清空源文件
echo> acces.log
4》慢查询日志:
慢查询日志用来记录执行时间指定时间的查询语句,默认情况下,慢查询日志功能是关闭的,通过修改my.cnf来开启;
log-slow-queries=/data/slow.log
long_query_time=n n代表默认时间为10秒。可以自行设置
删除慢查询日志两种方法:
1>删除源文件,使用mysqladmin 重新生成一个新的文件
rm slow.log && mysqladmin –uroot –p flush-logs
2>直接清空源文件
echo> slow.log
Mysql的备份,权限与日志的更多相关文章
- MySQL完全备份脚本:数据+二进制日志+备份日志
一. 脚本须知 1.mysql数据文件和二进制日志文件最好保存在不同的分区或存储设备上 2.备份完成后注意修改数据的权限以防止泄露重要信息,哪些主机哪些用户可以用来恢复 3. 查看导出的2进制日志文件 ...
- mysql备份和bin-log日志
总结]:mysql备份和bin-log日志 备份数据: mysqldump -uroot -p123456 test -l -F '/tmp/test.sql' -l:读锁(只能读取,不能更新) -F ...
- mysql数据安全之利用二进制日志mysqlbinlog备份数据
mysql数据安全之利用二进制日志mysqlbinlog备份数据 简介:如何利用二进制日志来备份数据 什么是二进制日志: 二进制日志就是记录着mysql数据库中的一些写入性操作,比如一些增删改,但是, ...
- Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复
Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...
- mysql数据库备份
前一段时间因为误操作删除了一张表的几条数据,弄得很尴尬,正好这周有空就折腾了下数据备份的知识,现把mysql的数据备份相关实践和心得总结如下: 一.使用mysqldump命令备份数据库: 备份整个数据 ...
- mysql多种备份方式比较及实现
Mysql备份 MySQL的备份和还原: 备份:存放为副本-->数据备份 RAID1,RAID10:保证硬件损坏而不会业务中止,不能保证逻辑上的损害 例如:DROP TABLE mydb.tb1 ...
- 转 MySQL 数据备份与还原
MySQL 数据备份与还原 原贴:http://www.cnblogs.com/kissdodog/p/4174421.html 一.数据备份 1.使用mysqldump命令备份 mysqldum ...
- mysql数据库备份与还原命令
还原一个数据库:mysql -h localhost -u root -p123456 www 备份一个数据库:mysqldump -h localhost -u root -p123456 www ...
- MySQL的备份和还原
MySQL的备份和还原 备份:副本 RAID1,RAID10:保证硬件损坏而不会业务中止: DROP TABLE mydb.tb1; 备份类型: 热备份.温备份和冷备 ...
随机推荐
- django之设置分页
分页 Django提供了一些类实现管理数据分页,这些类位于django/core/paginator.py中 Paginator对象 Paginator(列表,int):返回分页对象,参数为列表数据, ...
- Python操作中缓存Redis
Redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorte ...
- TCP粘包拆包基本解决方案
上个小节我们浅析了在Netty的使用的时候TCP的粘包和拆包的现象,Netty对此问题提供了相对比较丰富的解决方案 Netty提供了几个常用的解码器,帮助我们解决这些问题,其实上述的粘包和拆包的问题, ...
- leetcode508
/** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNo ...
- TestNG Hello World入门示例
https://www.yiibai.com/testng/hello-world-example.html https://www.yiibai.com/testng/ 作为一个经典的入门例子,这里 ...
- python算法之快速排序
快速排序 快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所 ...
- Python基础学习九 数据库备份
class BakDb(object): def __init__(self,ip,username,passwd,port=3306,path=r'C:\Users\BJQT\Desktop\dat ...
- 利用maven实现差异化配置
回顾过去 生产环境,测试环境,开发环境在不同的环境下会有各种各样的配置,比如数据库链接地址,账户名,密码等等.不同环境下都需要配置,但是配置却又不同.以前分享过一篇文章,介绍了我之前A公司的差异化配置 ...
- axis客户端循环访问webservice的时候只发送了几条数据就断开了的问题
原因 axis客户端访问webservice默认是使用http1.0版本的,这个版本的http不能保持长连接,应该换成http1.1版本 具体修改步骤: <?xml version=" ...
- 深入探究jvm之GC的算法及种类
一.GC基本概念 GC(Garbage Collection)垃圾收集,1960年最早在List中使用.在Java中GC回收的对象是堆空间和永久区,可以有效避免程序员人为造成内存泄漏问题.将堆空间和永 ...