备份恢复工具:percona-xtrabackup-2.0.0-417.rhel6.x86_64.rpm

mysql主从配置命令:

主:

1、编辑主MYSQL 服务器的MySQL配置文件my.cnf,在[mysqld]下面添加以下参数:

log-bin=mysql-bin //开启MYSQL二进制日志

server-id=1 //服务器ID不能重复

binlog-do-db=dzx2 //需要做主从备份的数据库名字

expire-logs-days = 7 //只保留7天的二进制日志,以防磁盘被日志占满

2、在 A 服务器添加一个用于主从复制的帐号:

登陆mysql命令行,执行

GRANT REPLICATION SLAVE ON *.* TO '帐号'@'从服务器IP' IDENTIFIED BY '密码';

例如:帐号是 rep,密码是 123,IP 是 192.168.1.3,则执行代码为

GRANT REPLICATION SLAVE ON *.* TO 'rep'@'192.168.1.3' IDENTIFIED BY '123';

3、重启MySQL ,让配置生效

4、登录MySQL命令行,例如:mysql -uroot –p

5、在主MySQL服务器上执行命令,把数据库设置成只读状态:

FLUSH TABLES WITH READ LOCK;

6、执行命令,并且记下file及position的值:

show master status;

7、备份需要做主从备份的数据库,用导出成SQL或者直接复制数据库文件方式都可以(参考:http://www.jb51.net/article/25257.htm)

8、回到MYSQL命令行窗口,解封数据库只读状态,执行:

UNLOCK TABLES;

9、登录论坛后台,“全局—站点信息”,开放论坛访问

10、将刚才备份出来的数据复制到从库服务器

从:

1.innobackupex --defaults-file=./my.cnf --apply-log  /bak/2009_0929

--defaults-file:默认配置文件

/bak/2009_0929备份目录

2.停止mysql,将备份目录mv为mysql data目录,启动mysql

3.登录从库的MySQL命令行,执行:

GRANT REPLICATION SLAVE  ON *.* TO 'replication'@'192.168.%' IDENTIFIED BY 'replication_password';

FLUSH PRIVILEGES;

change master to master_host='192.168.1.2', master_user='rep', master_password='123', master_log_file='file的值', master_log_pos=position的值;

//设置连接信息,file及position的值是之前记录下来,position的值没有单引号,其他的值要单引号

4.执行:

start slave; //启动从库连接

5.查看从库状态:

show slave status\G; //查看连接情况,是不是两个YES,两个YES为成功

6.编辑从MYSQL服务器的MySQL配置文件my.cnf,在[mysqld]下面添加以下参数:

master-host=192.168.1.2 //主库A的IP

master-user=rep //刚才在主库创建的帐号

master-password=123 //密码

mysql状态查看:

GlobalStatus:SHOW /*!50001 GLOBAL */ STATUS;

GlobalVariables:SHOW /*!50001 GLOBAL */ VARIABLES;

SHOW GLOBAL STATUS;

SHOW STATUS;

show slave status\G;

select查询:

首先我们建立一张带有逗号分隔的字符串。CREATE TABLE test(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),pname VARCHAR(20) NOT NULL,pnum VARCHAR(50) NOT NULL);

然后插入带有逗号分隔的测试数据
INSERT INTO test(pname,pnum) VALUES('产品1','1,2,4');
INSERT INTO test(pname,pnum) VALUES('产品2','2,4,7');
INSERT INTO test(pname,pnum) VALUES('产品3','3,4');
INSERT INTO test(pname,pnum) VALUES('产品4','1,7,8,9');
INSERT INTO test(pname,pnum) VALUES('产品5','33,4');

查找pnum字段中包含3或者9的记录
mysql> SELECT * FROM test WHERE find_in_set('3',pnum) OR find_in_set('9',pnum);
+----+-------+---------+
| id | pname | pnum    |
+----+-------+---------+
|  3 | 产品3 | 3,4     |
|  4 | 产品4 | 1,7,8,9 |
+----+-------+---------+
2 rows in set (0.03 sec)

使用正则
mysql> SELECT * FROM test WHERE pnum REGEXP '(3|9)';
+----+-------+---------+
| id | pname | pnum    |
+----+-------+---------+
|  3 | 产品3 | 3,4     |
|  4 | 产品4 | 1,7,8,9 |
|  5 | 产品5 | 33,4    |
+----+-------+---------+
3 rows in set (0.02 sec)
这样会产生多条记录,比如33也被查找出来了,不过MYSQL还可以使用正则,挺有意思的

find_in_set()函数返回的所在的位置,如果不存在就返回0
mysql> SELECT find_in_set('e','h,e,l,l,o');
+------------------------------+
| find_in_set('e','h,e,l,l,o') |
+------------------------------+
|                            2 |
+------------------------------+
1 row in set (0.00 sec)

还可以用来排序,如下;
mysql> SELECT * FROM TEST WHERE id in(4,2,3);
+----+-------+---------+
| id | pname | pnum    |
+----+-------+---------+
|  2 | 产品2 | 2,4,7   |
|  3 | 产品3 | 3,4     |
|  4 | 产品4 | 1,7,8,9 |
+----+-------+---------+
3 rows in set (0.03 sec)

如果想要按照ID为4,2,3这样排序呢?
mysql> SELECT * FROM TEST WHERE id in(4,2,3) ORDER BY find_in_set(id,'4,2,3');
+----+-------+---------+
| id | pname | pnum    |
+----+-------+---------+
|  4 | 产品4 | 1,7,8,9 |
|  2 | 产品2 | 2,4,7   |
|  3 | 产品3 | 3,4     |
+----+-------+---------+
3 rows in set (0.03 sec)

mysql新建用户本地无法登陆:

出此是用mysql,因为root权限过高,所以新建一用户appadmin,权限仅为要用到的数据库。创建语句如下:grant select,insert,update,delete on test.* to appadmin@"%" identified by "password";其中@“%”是可以在任何地址登录。 
创建后到mysql.user下查看,有该用户。但是使用mysql -u appadmin -ppassword 登录,提示无法登录:ERROR 1045 (28000): Access denied for user 'appadmin'@'localhost' (using password: YES) 
百思不得其解,遂google,其中有人说到“mysql.user 表中有另外一些记录产生了作用,最有可能的就是已经有一条''@localhost记录,就是用户名是空,主机字段是localhost的记录。” 影响了。查看该表果然有。 
mysql> select host,user,password from mysql.user; 
+-----------+------------------+-------------------------------------------+ 
| host      | user             | password                                  | 
+-----------+------------------+-------------------------------------------+ 
| localhost | root             | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | 
| mza       | root             | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | 
| 127.0.0.1 | root             | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | 
| localhost |                  |                                           | 
| mza       |                  |                                           | 
| localhost | debian-sys-maint | *19DF6BF8310D46D681AE072AB73ECEC99C018C19 | 
| %         | appadmin         | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 | 
+-----------+------------------+-------------------------------------------+ 
7 rows in set (0.00 sec) 
但是删除那些为空(匿名)的用户后仍然无法登录。(可能是因为没有重启mysql)于是只好耐着性子看mysql参考手册。发现其中增加用户部分有这么一段话: 
其中两个账户有相同的用户名monty和密码some_pass。两个账户均为超级用户账户,具有完全的权限可以做任何事情。一个账户 ('monty'@'localhost')只用于从本机连接时。另一个账户('monty'@'%')可用于从其它主机连接。请注意monty的两个账户必须能从任何主机以monty连接。没有localhost账户,当monty从本机连接时,mysql_install_db创建的localhost的匿名用户账户将占先。结果是,monty将被视为匿名用户。原因是匿名用户账户的Host列值比'monty'@'%'账户更具体,这样在user表排序顺序中排在前面。 
这段话说的很清楚,因此执行 grant select,insert,update,delete on test.* to appadmin@"localhost" identified by "password"; 
退出后用appadmin登录,成功。

mysql索引:

  1. 1.索引作用
  2. 在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率。特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍。
  3. 例如,有3个未索引的表t1、t2、t3,分别只包含列c1、c2、c3,每个表分别含有1000行数据组成,指为1~1000的数值,查找对应值相等行的查询如下所示。
  4. SELECT c1,c2,c3 FROM t1,t2,t3 WHERE c1=c2 AND c1=c3
  5. 此查询结果应该为1000行,每行包含3个相等的值。在无索引的情况下处理此查询,必须寻找3个表所有的组合,以便得出与WHERE子句相配的那些行。而可能的组合数目为1000×1000×1000(十亿),显然查询将会非常慢。
  6. 如果对每个表进行索引,就能极大地加速查询进程。利用索引的查询处理如下。
  7. (1)从表t1中选择第一行,查看此行所包含的数据。
  8. (2)使用表t2上的索引,直接定位t2中与t1的值匹配的行。类似,利用表t3上的索引,直接定位t3中与来自t1的值匹配的行。
  9. (3)扫描表t1的下一行并重复前面的过程,直到遍历t1中所有的行。
  10. 在此情形下,仍然对表t1执行了一个完全扫描,但能够在表t2和t3上进行索引查找直接取出这些表中的行,比未用索引时要快一百万倍。
  11. 利用索引,MySQL加速了WHERE子句满足条件行的搜索,而在多表连接查询时,在执行连接时加快了与其他表中的行匹配的速度。
  12. 2.  创建索引
  13. 在执行CREATE TABLE语句时可以创建索引,也可以单独用CREATE INDEX或ALTER TABLE来为表增加索引。
  14. 1.ALTER TABLE
  15. ALTER TABLE用来创建普通索引、UNIQUE索引或PRIMARY KEY索引。
  16. ALTER TABLE table_name ADD INDEX index_name (column_list)
  17. ALTER TABLE table_name ADD UNIQUE (column_list)
  18. ALTER TABLE table_name ADD PRIMARY KEY (column_list)
  19. 其中table_name是要增加索引的表名,column_list指出对哪些列进行索引,多列时各列之间用逗号分隔。索引名index_name可选,缺省时,MySQL将根据第一个索引列赋一个名称。另外,ALTER TABLE允许在单个语句中更改多个表,因此可以在同时创建多个索引。
  20. 2.CREATE INDEX
  21. CREATE INDEX可对表增加普通索引或UNIQUE索引。
  22. CREATE INDEX index_name ON table_name (column_list)
  23. CREATE UNIQUE INDEX index_name ON table_name (column_list)
  24. table_name、index_name和column_list具有与ALTER TABLE语句中相同的含义,索引名不可选。另外,不能用CREATE INDEX语句创建PRIMARY KEY索引。
  25. 3.索引类型
  26. 在创建索引时,可以规定索引能否包含重复值。如果不包含,则索引应该创建为PRIMARY KEY或UNIQUE索引。对于单列惟一性索引,这保证单列不包含重复的值。对于多列惟一性索引,保证多个值的组合不重复。
  27. PRIMARY KEY索引和UNIQUE索引非常类似。事实上,PRIMARY KEY索引仅是一个具有名称PRIMARY的UNIQUE索引。这表示一个表只能包含一个PRIMARY KEY,因为一个表中不可能具有两个同名的索引。
  28. 下面的SQL语句对students表在sid上添加PRIMARY KEY索引。
  29. ALTER TABLE students ADD PRIMARY KEY (sid)
  30. 4.  删除索引
  31. 可利用ALTER TABLE或DROP INDEX语句来删除索引。类似于CREATE INDEX语句,DROP INDEX可以在ALTER TABLE内部作为一条语句处理,语法如下。
  32. DROP INDEX index_name ON talbe_name
  33. ALTER TABLE table_name DROP INDEX index_name
  34. ALTER TABLE table_name DROP PRIMARY KEY
  35. 其中,前两条语句是等价的,删除掉table_name中的索引index_name。
  36. 第3条语句只在删除PRIMARY KEY索引时使用,因为一个表只可能有一个PRIMARY KEY索引,因此不需要指定索引名。如果没有创建PRIMARY KEY索引,但表具有一个或多个UNIQUE索引,则MySQL将删除第一个UNIQUE索引。
  37. 如果从表中删除了某列,则索引会受到影响。对于多列组合的索引,如果删除其中的某列,则该列也会从索引中删除。如果删除组成索引的所有列,则整个索引将被删除。
  38. 5.查看索引
  39. mysql> show index from tblname;
  40. mysql> show keys from tblname;
  41.   · Table
  42.   表的名称。
  43.   · Non_unique
  44.   如果索引不能包括重复词,则为0。如果可以,则为1。
  45.   · Key_name
  46.   索引的名称。
  47.   · Seq_in_index
  48.   索引中的列序列号,从1开始。
  49.   · Column_name
  50.   列名称。
  51.   · Collation
  52.   列以什么方式存储在索引中。在MySQL中,有值‘A’(升序)或NULL(无分类)。
  53.   · Cardinality
  54.   索引中唯一值的数目的估计值。通过运行ANALYZE TABLE或myisamchk -a可以更新。基数根据被存储为整数的统计数据来计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL使用该索引的机会就越大。
  55.   · Sub_part
  56.   如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL。
  57.   · Packed
  58.   指示关键字如何被压缩。如果没有被压缩,则为NULL。
  59.   · Null
  60.   如果列含有NULL,则含有YES。如果没有,则该列含有NO。
  61.   · Index_type
  62.   用过的索引方法(BTREE, FULLTEXT, HASH, RTREE)。

MySql用户创建、授权以及删除:

The create user command:

<!---->mysql> CREATE USER yy IDENTIFIED BY '123';

yy表示你要建立的用户名,后面的123表示密码

上面建立的用户可以在任何地方登陆。

如果要限制在固定地址登陆,比如localhost 登陆:

<!---->mysql> CREATE USER yy@localhost IDENTIFIED BY '123';

grant:

<!---->mysql> GRANT ALL PRIVILEGES ON *.* TO user;@localhost
<!---->grant select,insert,update,delete on *.* to test1@"%" Identified by "abc";

grant select,insert,update,delete on *.* to test1@"%" Identified by "abc";

格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码"

修改密码:

<!---->mysql> grant   all   privileges   on   pureftpd.*   to   koko@localhost   identified   by   'mimi';  

flush:

<!---->mysql> flush privileges;

查看用户信息:

<!---->mysql> select host,user from mysql.user; 
 
 

mysql操作及自动化运维的更多相关文章

  1. 【目录】Python自动化运维

    目录:Python自动化运维笔记 Python自动化运维 - day2 - 数据类型 Python自动化运维 - day3 - 函数part1 Python自动化运维 - day4 - 函数Part2 ...

  2. 自动化运维—tomcat服务起停(mysql+shell+django+bootstrap+jquery)

    项目简介: 项目介绍:自动化运维是未来的趋势,最近学了不少东西,正好通过这个小项目把这些学的东西串起来,练练手. 基础架构: 服务器端:web框架-Django 前端:html css jQuery ...

  3. 部署MySQL自动化运维工具inception+archer

    ***************************************************************************部署MySQL自动化运维工具inception+a ...

  4. 有赞MySQL自动化运维之路—ZanDB

      有赞MySQL自动化运维之路—ZanDB 一.前言 在互联网时代,业务规模常常出现爆发式的增长.快速的实例交付,数据库优化以及备份管理等任务都对DBA产生了更高的要求,单纯的凭借记忆力去管理那几十 ...

  5. 有赞 MySQL 自动化运维之路 — ZanDB

    转自:https://tech.youzan.com/youzan-mysql-auto-ops-road/ 一.前言 在互联网时代,业务规模常常出现爆发式的增长.快速的实例交付,数据库优化以及备份管 ...

  6. Inception介绍(MySQL自动化运维工具)

    Inception介绍 GitHub:https://github.com/mysql-inception/inception 文档:https://mysql-inception.github.io ...

  7. CheungSSH国产自动化运维工具开源Web界面

    CheungSSH web2.0 发布文档 CheungSSH 简介 CheungSSH是一款国人自主研发的Linux运维自动化管理服务器软件,秉着为企业降低运营成本,解放管理员双手和自动化生产的理念 ...

  8. #研发解决方案#iDB-数据库自动化运维平台

    郑昀 创建于2015/12/2 最后更新于2015/12/2 关键词:数据库,MySQL,自动化运维,AutoDDL,刷库,帐号授权,审核,回滚 提纲: 数据库自动化运维什么?别人家是怎么玩的? 我们 ...

  9. 自动化运维工具之ansible

    自动化运维工具之ansible   一,ansible简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fab ...

随机推荐

  1. DEDECMS网站管理系统Get Shell漏洞

    漏洞版本: DEDECMS 5.3/5.6 漏洞描述: DedeCms 基于PHP+MySQL的技术开发,支持Windows.Linux.Unix等多种服务器平台,从2004年开始发布第一个版本开始, ...

  2. Java中Action层、Service层、Modle层和Dao层的功能区分

    一.Java中Action层.Service层.Modle层和Dao层的功能区分: 首先,这是现在最基本的分层方式,结合了SSH架构. modle层就是对应的数据库表的实体类.(即domain) Da ...

  3. Cocos2d-X中的动作特效

    Cocos2d-X中提供了很丰富的动作特效 比如:网格动画 扭曲特效 3D瓷砖波动特效 程序代码: #include "ActionEffect.h" #include " ...

  4. linux 的命令 -exec 的使用

    linux中的 exec命令,-exec 后面跟的是linux的 command 命令,exec命令以分号结束‘:’, 该分号前面要放 反斜杠转义 . find . -name jquery.js - ...

  5. c# String.IndexOf 方法 string查找字符串

    c# String.IndexOf 方法 (value, [startIndex], [count]) 报告指定字符在此实例中的第一个匹配项的索引.搜索从指定字符位置开始,并检查指定数量的字符位置. ...

  6. C# 网络斗地主源码开源

    C# 网络斗地主源码开源多线程 讨论交流及  下载地址 可以发送聊天消息

  7. Was liberty资料总结

    WebSphere Application Server Liberty Profile Guide for Developers: http://www.redbooks.ibm.com/redbo ...

  8. mysql更新日志问题

    [root@localhost ~]# /etc/init.d/mysqld restart 停止 mysqld: [确定] 正在启动 mysqld: [确定] 故障:今天在维护以前数据库日志的时候, ...

  9. spring作用域(Spring Bean Scopes Example)

    http://docs.spring.io/spring/docs/2.0.x/reference/beans.html#beans-factory-scopes In Spring, bean sc ...

  10. Python模块学习 ---- logging 日志记录

    许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪.在.NET平台中,有非常著名的第三方开源日志组件log4net,c++中,有人们熟悉的log4cp ...