mysql问题小结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql问题小结相关的知识,希望对你有一定的参考价值。
1、mysql主从跳过一个报错的事务
#停止slave进程 stop slave; #跳过一个事务 set global sql_slave_skip_counter=1; #启动slave进程 start slave;
2、回收权限
#回收超级权限 revoke grant option on *.*(库.表) from admin(用户名称); #回收权限,只保留读权限 UPDATE `mysql`.`user` SET `Select_priv`=‘Y‘, `Insert_priv`=‘N‘, `Update_priv`=‘N‘, `Delete_priv`=‘N‘, `Create_priv`=‘N‘, `Drop_priv`=‘N‘, `Reload_priv`=‘N‘, `Shutdown_priv`=‘N‘, `Process_priv`=‘N‘, `File_priv`=‘N‘, `Grant_priv`=‘N‘, `References_priv`=‘N‘, `Index_priv`=‘N‘, `Alter_priv`=‘N‘, `Show_db_priv`=‘N‘, `Super_priv`=‘N‘, `Create_tmp_table_priv`=‘N‘, `Lock_tables_priv`=‘N‘, `Execute_priv`=‘N‘, `Repl_slave_priv`=‘N‘, `Repl_client_priv`=‘N‘, `Create_view_priv`=‘N‘, `Show_view_priv`=‘N‘, `Create_routine_priv`=‘N‘, `Alter_routine_priv`=‘N‘, `Create_user_priv`=‘N‘, `Event_priv`=‘N‘, `Trigger_priv`=‘N‘, `Create_tablespace_priv`=‘N‘, `ssl_type`=‘‘, `ssl_cipher`=‘‘, `x509_issuer`=‘‘, `x509_subject`=‘‘, `max_questions`=‘0‘, `max_updates`=‘0‘, `max_connections`=‘0‘, `max_user_connections`=‘0‘, `plugin`=‘mysql_native_password‘, `authentication_string`=‘‘, `password_expired`=‘N‘ WHERE (`Host`=‘%‘) AND (`User`=‘admin‘);
3、mysql主从复制问题的一次解决方案
#1、查看主从复制状态
mysql>show slave status\G
#2、使用xtrabackup进行备份和恢复
xtrabackup是percona公司出的一个备份工具,支持在线热备,备份时不影响数据读写。提供了两个工具,xtrabackup和innobackupex。 其中xtrabackup只能备份innodb和xtradb两种数据表,而不能备份MyISAM数据表。而innobackupex则封装了xtrabackup,能同时备份处理innodb和myisam,不过在备份myisam的时候需要加全局读锁。
#2.1、安装步骤
安装xtrabackup需要在主从服务器上都进行安装,同时在主从服务器上安装的软件版本需一致才可以。
#2.1.1、配置epel源
~]# cat /etc/yum.repos.d/myepel.repo [myepel] name=zheda baseurl=http://mirrors.zju.edu.cn/epel/6/x86_64/ gpgcheck=0 enabled=1
#2.1.2、安装方式
1、下载percona的yum源进行安装。 ~]# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm 查询对应的percona yum源提供的rpm包。 ~]#yum list | grep percona
可以根据查询到的xtrabackup的版本,选择一个进行安装。此处安装2.2版本的。 ~]# yum install percona-xtrabackup-22 –y 即可完成安装过程。
2、下载rpm包进行安装。 需要事先配置epel源。使用wget命令可以直接下载rpm包。此处下载的为2.4版本的。 ~ ]# wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.5/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.5-1.el6.x86_64.rpm
下载完成即可直接安装。 ~ ]# yum install percona-xtrabackup-24-2.4.5-1.el6.x86_64.rpm –y 安装完成即可使用。
#2.2、备份主库数据
#设置主库全局只读 mysql>set global read_only=1; #开始备份 ~ ]#innobackupex --defaults-file=/etc/my.cnf --parallel=4 /tmp/mysqlback/ >/dev/null 2>&1 备份参数解析: --defaults-file=/etc/my.cnf指明备份时mysql配置文件位置 --parallel=4开启多少线程进行备份 /tmp/mysqlback/备份的目标目录,一般该目录事先存在 备份结果如下: 备份结果以时间戳为目录存放。如下图所示。
#2.3、将备份的数据上传至从库服务器
copy已经备份完成的数据到从库服务器上。 ~]# cd /tmp/mysqlback && scp -r 2017-01-14_00-14-11 10.74.244.33:/tmp/mysqlback/
#2.4、在从库服务器进行恢复
停止mysql从库服务。 ~]# service mysqld stop 删除之前数据库数据目录下的数据。 ~]# cd /data/mysqldata && rm –rf * 提交备份之前未完成的事务。 ~]# cd /tmp/mysqlback && innobackupex --apply-log 2017-01-14_00-14-11 将备份数据恢复至从库的数据目录。 ~]# cd /tmp/mysqlback && innobackupex --copy-back 2017-01-14_00-14-11 修改从库mysql数据目录的权限。 ~]# cd /data && chown -R mysql:mysql mysqldata 在从库服务器上启动mysql数据库。 ~]# service mysqld start ------------------------以上操作在从库上执行------------------------------------ 在主库上创建具有复制权限的账户。 mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO ‘repluser‘@‘从库ip地址‘IDENTIFIED BY ‘replpass‘; 解析: 从库的ip地址,也可以通过通配符来指定某一ip段。 在主库上查看当前二进制日志所在位置。 mysql>show master status;
为从库提供主库二进制日志指向。 mysql>CHANGE MASTER TO MASTER_HOST=‘主库ip地址‘, MASTER_USER=‘repluser‘,MASTER_PASSWORD=‘replpass‘, MASTER_LOG_FILE=‘master-bin.000021‘,MASTER_LOG_POS=58469965; 解析: mysql主库的ip地址 repluser 具有复制权限的账号 replpass 具有复制权限的密码 在从库上执行查看当前复制进程是否启动。在刚恢复从库的时候,复制进程是未启动的。 在从库上启动复制进程。 mysql> start slave; 取消主库的全局只读。 mysql>set global read_only=0;
4、mysql数据库备份
#将数据库备份至一个文件中 mysql -e "show databases;" -u(用户名) -p -h(数据库ip地址) | grep -Ev "Database|information_schema|test|performance_schema(去除这些库不进行备份)" | xargs mysqldump -u(用户名) -p -h(数据库ip地址) --databases > mysql_dump_tencent.sql #将数据库单独进行备份 for i in `mysql -h(数据库ip地址) -u(用户名) -p(密码) -e "show databases;" | grep -v ^+ | egrep -v ‘(information_schema|performance_schema|test|mysql|Database)‘`;do /usr/bin/mysqldump -h(数据库ip地址) -u(用户名) -p(密码) -q --database ${i} > /tmp/backup/${i}.sql if [ $? == 0 ];then echo "Backup omc_trunk ${date_time} $i database OK" >> /tmp/backup/backup.log else echo "Backup omc_trunk ${date_time} $i database error" >> /tmp/backup/backup.log fi done #将备份的目录进行压缩 cd /tmp/ && /bin/tar zcvf backup.tar.gz backup
本文出自 “Angry涓禕ird” 博客,转载请与作者联系!
以上是关于mysql问题小结的主要内容,如果未能解决你的问题,请参考以下文章