日志文章

2007年08月07日 00:11:11

MySQL admin摘要

MySQL admin go on:
------------------------------------------------------------------------------
更多请见: (MySQL中文手册)
1:select now();--Like their all:select CURRENT_DATE()+select CURRENT_TIME()
2:select user();
3:select database();
4:describe db_name;
------------------------------------GRANT----------------------------------
5:grant all privileges on *.* to [url=mailto:]'tony'@'localhost' identified by "pass_word" with grant option;
--another:grant reload,process on *.* to [url=mailto:]'admin'@'localhost;
--another:grant usage on *.* to [url=mailto:]'dummy'@'localhost';//
6:flush privileges;--在直接操纵权限表的情况下使用
7:show privileges; --打印可操作的权限列表
8:drop user user_name[,user_name];--要点:DROP USER不能自动关闭任何打开的用户对话。而且,如果用户有打开的对话,此时取消用户,则命令不会生效,直到用户对话被关闭后才生效。一旦对话被关闭,用户也被取消,此用户再次试图登录时将会失败。这是有意设计的。
--完整的GRANT语法:
GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ...
  ON [object_type] {tbl_name | * | *.* | db_name.*}
  TO user [IDENTIFIED BY [PASSWORD] 'password']
    [, user [IDENTIFIED BY [PASSWORD] 'password']] ...
  [REQUIRE
    NONE |
    [{SSL| X509}]
    [CIPHER 'cipher' [AND]]
    [ISSUER 'issuer' [AND]]
    [SUBJECT 'subject']]
  [WITH with_option [with_option] ...]
object_type =
  TABLE
| FUNCTION
| PROCEDURE
with_option =
  GRANT OPTION
| MAX_QUERIES_PER_HOUR count
| MAX_UPDATES_PER_HOUR count
| MAX_CONNECTIONS_PER_HOUR count
| MAX_USER_CONNECTIONS count
---完整的GRANT语法:-
9:更多限制的grant语句:
grant all on test.* to [url=mailto:]'francis'@'localhost' identified by 'frank' with max_queries_per_hour 20 max_updates_per_hour 20 max_connections_per_hour 5 max_user_connections 2;--限制用户访问的资源
--服务器运行时,它统计每个账户使用资源的次数。如果账户在最后一个小时的连接次数达到限制,该账户的进一步的连接被拒绝。类似地,如果账户达到查询或更新次数的限制,进一步的查询或更新被拒绝。在这种情况下,会给出相关错误消息。
-------------------Set user password--------------------------
10:SET PASSWORD FOR [url=mailto:]'jeffrey'@'%' = PASSWORD('biscuit');
--Ignore 'for ...' for set password itself
  set password=PASSWORD('xxxx');--PASSWPRD() is a crypt fun...
--you can also use mysqladmin tool to set pass
--$mysqladmin -u jerry -h % password pass_word_value
--You can also control the user table to update privileges .Remember :flush privileges
11:--你可以在一个配置文件里面保存你的密码,并设置该文件权限为400 or 600
12:show variable like '%ssl%';--Use regex to get some variables
------------------------DataBase backup (完全备份和增量备份)以及如何执行表的维护------------------------------------
13:--SQL级别的备份
select into ... to outfile
BACKUP table outfile
--Select and BACKUP grammar:
--BACKUP TABLE tbl_name [, tbl_name] ... TO '/path/to/backup/directory'
--outfile不能事先存在,因为覆盖完整的文件会有安全风险
14:--Use backup tool:mysqldump mysqlhotcopy(Only work for MyISAM engine,He actually do copy the *.frd *.MYI *.MYD file,And this can work only when databases is not doing update...)
--So,use mysqldump is good ieda.
--Completed backup database;
--$mysqldump -u jerry -p test >databasetest.sql
--shell# mysqlhotcopy db_name /path/to/some/dir
15:-- log-bin 二进制日志文件中提供了执行mysqldump之后对数据库的更改进行复制所需要的信息。
16:--每次重启,MySQL服务器用序列中的下一个编号创建一个新的二进制日志文件。当服务器运行时,你还可以通过执行FLUSH LOGS SQL语句或mysqladmin flush-logs命令,告诉服务器关闭当前的二进制日志文件并创建一个新文件。mysqldump也有一个选项来清空日志。数据目录中的.index文件包含该目录下所有MySQL二进制日志的清单。该文件用于复制
--flush logs;
--mysqladmin flush logs
17:--恢复时MySQL二进制日志很重要,因为它们是增量备份。如果进行完全备份时确保清空了日志,则后面创建的二进制日志文件包含了备份后的所有数据更改。让我们稍稍修改前面的mysqldump命令,让它在完全备份时能够清空 MySQL二进制日志,以便转储文件包含包含新的当前的二进制日志:
--shell> mysqldump --single-transaction --flush-logs --master-data=2
      --all-databases > backup_sunday_1_PM.sql
--执行该命令后,数据目录则包含新的二进制日志文件,gbichot2-bin.000007。结果.sql文件包含下列行:
-- Position to start replication or point-in-time 恢复时y from
-- CHANGE MASTER TO MASTER_LOG_FILE='gbichot2-bin.000007',MASTER_LOG_POS=4;
--因为mysqldump命令可以执行完全备份,这些行表示两件事情:
--       .sql文件包含所有写入gbichot2-bin.000007二进制日志文件或最新的文件之前的更改。
--·       备份后所记录的所有数据更改不出现在.sql中,但出现在gbichot2-bin.000007二进制日志文件或最新的文件中。
--在星期一下午1点,我们可以清空日志开始新的二进制日志文件来创建增量备份。例如,执行mysqladmin flush-logs命令创建gbichot2-bin.000008。星期日下午1点的完全备份和星期一下午1点之间的所有更改为文件gbichot2-bin.000007。该增量备份很重要,因此最好将它复制到安全的地方。(例如,备份到磁带或DVD上,或复制到另一台机器上)。在星期二下午1点,执行另一个mysqladmin flush-logs命令。星期一下午1点和星期二下午1点之间的所有所有更改为文件gbichot2-bin.000008(也应复制到某个安全的地方)。
--MySQL二进制日志占据硬盘空间。要想释放空间,应随时清空。操作方法是删掉不再使用的二进制日志,例如进行完全备份时:
--shell> mysqldump --single-transaction --flush-logs --master-data=2
      --all-databases --delete-master-logs > backup_sunday_1_PM.sql
--注释:如果你的服务器为复制主服务器,用mysqldump --delete-master-logs删掉MySQL二进制日志很危险,因为从服务器可能还没有完全处理该二进制日志的内容。
18:--备份策略摘要:
--出现操作系统崩溃或电源故障时,InnoDB自己可以完成所有数据恢复工作。但为了确保你可以睡好觉,应遵从下面的指导:

-- 一定用--log-bin或甚至--log-bin=log_name选项运行MySQL服务器,其中日志文件名位于某个安全媒介上,不同于数据目录所在驱动器。如果你有这样的安全媒介,最好进行硬盘负载均衡(这样能够提高性能)。定期进行完全备份,使用mysqldump命令进行在线非块备份。用FLUSH LOGS或mysqladmin flush-logs清空日志进行定期增量备份


-----------------------------------总结一下:
为保证数据完整性
1:以log-bin方式启动mysqld服务

2:使用InnoDB引擎
3:使用mysqldump定时完整备份,并使用注意flush logs.
4:定时使用flush logs做增量备份

Tags: MySQL   Backup   logbin   InnoDB  

类别: java开发 |  评论(0) |  浏览(4833) |  收藏
发表评论