mysql日常问题处理

1. 一般的异常只需要跳过一步即可恢复

>slave stop;

>SET GLOBAL sql_slave_skip_counter = 1;

>slave start;

2.断电导致主从不能同步时,通主库的最后一个bin-log日志进行恢复

在主库服务器上,mysqlbinlog mysql-bin.xxxx > binxxxx.txt

tail -n 100000  binxxxx.txt > tail-binxxxx.txt

vim tail-binxxxx.txt 打开tail-binxxxx.txt文件找到最后一个postion值

然后在从库上,change host to 相应正确的值

>slave stop;

>change master to master_host=‘ip‘, master_user=‘username‘, master_password=‘password‘, master_log_file=‘mysql-bin.xxxx‘, master_log_pos=xxxx;

>slave start;

>show slave status\G;

3.主键冲突、表已存在等错误代码如1062,1032,1060等,可以在mysql主配置文件指定

略过此类异常并继续下条sql同步,这样也可以避免很多主从同步的异常中断

[mysqld]

slave-skip-errors = 1062,1032,1060

MySQL 复制的基本过程如下:

1. Slave 上面的IO 线程连接上Master,并请求从指定日志文件的指定位置(或者从

最开始的日志)之后的日志内容;

2. Master 接收到来自Slave 的IO 线程的请求后,通过负责复制的IO 线程根据请

求信息读取指定日志指定位置之后的日志信息,返回给Slave 端的IO 线程。返回信

息中除了日志所包含的信息之外,还包括本次返回的信息在Master 端的Binary Log

文件的名称以及在Binary Log 中的位置;

3. Slave 的IO 线程接收到信息后,将接收到的日志内容依次写入到Slave 端的

Relay Log 文件(mysql-relay-bin.xxxxxx)的最末端,并将读取到的Master 端的binlog

的文件名和位置记录到master-info 文件中,以便在下一次读取的时候能够清楚的

高速Master“我需要从某个bin-log 的哪个位置开始往后的日志内容,请发给我”

4. Slave 的SQL 线程检测到Relay Log 中新增加了内容后,会马上解析该Log 文

件中的内容成为在Master 端真实执行时候的那些可执行的Query 语句,并在自身执

行这些Query。这样,实际上就是在Master 端和Slave 端执行了同样的Query,所

以两端的数据是完全一样的。

实际上MySQL 自己早就想到了这一点,所以在MySQL 的Binary Log 中

记录了当前MySQL 的server-id,而且这个参数也是我们搭建MySQL Replication 的时候

必须明确指定,而且Master 和Slave 的server-id 参数值比需要不一致才能使MySQL

Replication 搭建成功。一旦有了server-id 的值之后,MySQL 就很容易判断某个变更是

从哪一个MySQL Server 最初产生的,所以就很容易避免出现循环复制的情况。而且,如果

我们不打开记录Slave 的Binary Log 的选项(--log-slave-update)的时候,MySQL 根

本就不会记录复制过程中的变更到Binary Log 中,就更不用担心可能会出现循环复制的情

形了。

mysql日常问题处理

时间: 2024-10-08 03:40:21

mysql日常问题处理的相关文章

mysql日常错误信息解决方法:InnoDB: and force InnoDB to continue crash recovery here.

今天早上上班来打开环境,mysql报了这个错误,猜到的原因应该是昨天晚上下班没等mysql服务器退出就关闭计算机. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 2014-05-09 09:44:25 4128 [ERROR] InnoDB: Attempted to open a previously opened tablespace. Previous tablespace manage_yunfan/nav_areasource uses space ID: 2 at

MySQL日常命令

MySQL日常操作 mysqladmin -u root -p password "abcabc" 给MySQL root 账号设置密码之前如果设置过密码就输原密码,没有则回车.登陆 mysql -uroot -p授权远程登录:grant all privileges on . to 'root'@'%' identified by 'abcabc' with grant option; mysql> show databases; #查看所有数据库mysql> creat

mysql日常运维与参数调优

日常运维 DBA运维工作 日常 导数据,数据修改,表结构变更 加权限,问题处理 其它 数据库选型部署,设计,监控,备份,优化等 日常运维工作: 导数据及注意事项 数据修改及注意事项 表结构变更及注意事项 加权限及注意事项 问题处理,如数据库响应慢 导数据及注意事项 数据最终形式(csv,sql文本,还是直接导入某库中) 导数据方法(mysqldump,select into outfile,) 注意事项 导出为csv格式需要file权限,并且只能数据库本地导 避免锁库锁表(mysqldump使用

【20180105】mysql日常优化一则

导读:在日常的MySQL的SQL语句优化工作中,总会遇到了各种各样的问题.今天就是遇到了一个比较诡异的问题,在这里记录下来方便自己的记忆. MySQL版本信息: MySQL 5.6.38 SQL语句(其中的关键字信息已经做脱敏处理): SELECT id, name, headurl, intro, gender, location, job, birthday, source,created_at FROM user  WHERE name LIKE '%name%' ORDER BY cre

MySQL 日常运维业务账号权限的控制

在MySQL数据库日常运维中,对业务子账号的权限的统一控制十分必要. 业务上基本分为读账号和写账号两种账号,所以可以整理为固定的存储过程,让数据库自动生成对应的库的账号,随机密码.以及统一的读权限,写权限.(这里没有对 host进行过多的限制.只赋给通用的192.168.% .有兴趣的同学可以在存储过程加个参数,对host 控制) delimiter // set session sql_log_bin=OFF; drop PROCEDURE IF EXISTS `usercrt` // CRE

非后端开发Mysql日常使用小结

数据库的五个概念 数据库服务器 数据库 数据表 数据字段 数据行 那么这里下面既是对上面几个概念进行基本的日常操作. 数据库引擎使用 这里仅仅只介绍常用的两种引擎,而InnoDB是从MySQL 5.6.版本以后InnoDB就是作为默认启动使用的存储引擎. (1) InnoDB a,支持ACID,简单地说就是支持事务完整性.一致性: b,支持行锁,以及类似ORACLE的一致性读,多用户并发: c,独有的聚集索引主键设计方式,可大幅提升并发读写性能: d,支持外键: e,支持崩溃数据自修复: Inn

mysql 日常操作     基础篇

一.数据库版本:社区版    企业版    集群版  社区版:可以免费使用 (可以个人使用,不能商业用途)企业版:费用比集群版便宜集群版: 官网  :  http://www.mysql.org 二.mysql的安装 (mysql工具包   mysql-server模块和功能包)#yum -y   install  mysql    mysql-server   ##yum 安装  默认端口 :  3306 主配置文件 : /etc/my.cnf #ps aux  | grep   mysqld

MySQL日常管理

查看数据库服务器的版本 select version(); 创建数据库 create database dbname character_set=utf8 collate=utf8_general_ci 删除数据库 drop database dbname; 选择使用的数据库 mysql>use dbname; 察看数据库中存在的表名 mysql>show tables; mysql>show tables from schema_name; 创建数据库表 create table tb

mysql日常问题

数据库启动不了 参数不正确如果公共表空间文件或 innodb 日志文件的大小与配置文件中的大小不一致,会导致启动不了,即1 ) innodb_log_file_size 参数的大小与 实际文件 ib_logfile0 的大小不一致2 ) innodb_data_file_path 参数的大小与实际文件 ibdata1 的大小不一致处理方法:1 ) 修改参数与文件大小一致 内存不足如果在启动时提示内存不足,一般就是参数 innodb_buffer_pool_size 设置过大,超过了机器的实际内存