Mysqldba
mysqlDBA
2)备份:制定和实施数据库备份计划,灾难出现时对数据库信息进行恢复,维护适当介质上的存档或者备份数据。对数据库的备份策略要根据实际要求进行更改,数据的日常备份情况进行监控。备份大概分为两种:一种是定时、计划性的备份,包含全备和增量备份,常用的工具一般为mysqldump以及xtrabackup为代表的第三方备份工具;一种是执行DML时更新和删除的备份,这种备份一般有以下几种备份方式:一种为create tablexxx_mmddhhmm select的方式备份到表中,一种是mysqldump加上条件做备份,还有一种是select into oufile等几种方式,防止执行错误时可以快速的恢复。在日常对数据库的操作中,特别作为一个DBA,永远要给自己留一个后手,保证在需要进行数据恢复的时候可以随手拈来
4)故障处理: 可以和研发一起制定相应的预案,并且和监控结合,当达到一定的阀值,使用相应的脚本自动处理,这样在一定程度上减少DBA的工作量、提高故障处理效率
6)数据库性能优化:产品对外提供服务最重要的一点是用户体验,用户体验中非常重要的是产品的可用性和响应速度。而如何用最合理的资源支持产品提供高可用和高速度的用户体验,这也是DBA的重要职责。在多年的DBA生涯中,个人对数据库故障的总结为:80%的甚至更高的故障来自变态的SQL语句,10%左右的来自数据库架构方面设计的不合理,10%左右的来自硬件、OS层面。那么基本的优化重点就就是对SQL的优化,这个需要给研发人员进行MySQL开发规范进行培训,制定严格的SQL准入规则,审核每一条上线的SQL语句,在SQL源头上堵住大部分,然后就是对慢SQL的监控分析,定期的发给研发进行整改,并督促研发在限定的时间内整改。这部分的工作较为繁琐平淡,但是执行好了,可以杜绝很多不必要的故障,保证业务的高效、稳定运行,这一部分工作非常考验DBA的基础理论知识,考验DBA的责任性和工作的毅力。 个 人认为,一个好的DBA所需要具备的基本技能包含:理解数据备份/恢复与灾难恢复、DBA常用工具集的使用、知道如何快速寻找答案、知道如何监控和优化数 据库性能、尽可能实现自动化、容量监控与规划、索引设计、数据库设计、数据库安全性、持续不断地学习和研究新版本、可以单独的编写独立的或者系统的功能脚本。这些技能基本涵盖MySQL基础理论知识、OS层面知识、硬件知识、网络知识、代码编写能力、架构设计规划能力、监控、运维理念、运维自动化等。因此,做一个DBA,不单纯的数据库层面的,基本知识涵盖很多层面,因此可以说DBA综合知识极高的复合型专业人才。
http://wangwei007.blog.51cto.com/68019/1718311
mysql> show slave status \G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.0.72 Master_User: slave Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000003 Read_Master_Log_Pos: 122619318 Relay_Log_File: dkm-server-relay-bin.000010 Relay_Log_Pos: 11910328 Relay_Master_Log_File: mysql-bin.000003 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 122619318 Relay_Log_Space: 15630329 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1 Master_UUID: 70ad2da1-f80a-11e6-a44a-623530313666 Master_Info_File: /data/apps/mysql/data/master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0
数据迁移
日常
好像除去jenkins 有一个可以来让别人方便 sql的东西 在运维规划里面有说到么 ?
mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces
报错原因: 缺少process权限导致 解决办法: 授权 mysql> grant process on *.* to 'backup'@'localhost'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
日常shell
方法一 使用mysql参数的方法 看起来不成效 mysql -u$user -p$pass -D $db -e "select host from user;"|grep -v "Warning: Using a password" 当然,可以通过将传参的方式来传递 -e 后面的语句。 方法二 重定向 暂时最好是这个拉 去掉消除 重定向 mysql: [Warning] Using a password on the command line interface can be insecure. #!/bin/bash mysql -ucore -h172.1.10.6 -p`cat /home/eva` -e "`cat $1`;" 2>/dev/null 方法三 touch /etc/my.password [client] user=root password=密码 mysql --defaults-extra-file=/etc/my.password
事务
MySQL开启事务的两种方式
方式 1
START TRANSACTION 或 BEGIN 开始新的事务 COMMIT 提交当前事务 ROLLBACK 回滚当前事务
这是大家熟知的一种方式,其中开启事务的方式 start transaction 和 begin 是相同的。
mysql> use evan; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> BEGIN; Query OK, 0 rows affected (0.00 sec) mysql> update policy as a,policy_recognizee_policy as b set b.relation =999 where a.id =b.policy_id and a.sales_platform='qixin' and b.relation =4; Query OK, 1466 rows affected (0.55 sec) Rows matched: 1466 Changed: 1466 Warnings: 0 mysql> COMMIT; Query OK, 0 rows affected (0.02 sec)