MySQL问题随笔记录
数据库主从问题归纳
1.数据库因为之前一台服务器做了主从,现在和另外一台服务器进行主从配置使用 show slave status\G 进行查看时 master_host显示之前的IP地址导致不成功
解决方法:找到master.info这个文件一般放在MySQL data目录下可以把它删除或者重命名,数据库重启后自动生成 因为该文件还是保存之前的数据导致的
2.mysql主从同步跳过错误的方法:
1、跳过指定数量的事务:
mysql>slave stop; mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 #跳过一个事务 mysql>slave start
2、修改mysql的配置文件,通过slave_skip_errors
参数来跳所有错误或指定类型的错误
vim /etc/my.cnf [mysqld] #slave-skip-errors=1062,1053,1146 #跳过指定error no类型的错误 #slave-skip-errors=all #跳过所有错误
3.mysql主从报错:ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repositor
Mysql数据库主从搭建,从库运行,报错
ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
使用start slave开启主从复制过程后,如果SlaveIORunning一直是Connecting,则说明主从复制一直处于连接状态,这种情况一般是下面几种原因造成的,我们可以根据 Last_IO_Error提示予以排除。
reset slave;
start slave;
数据库启动报错
1.数据库启动报错(Starting MySQL... ERROR! The server quit without updating PID file (/usr/local/mysql/data/mysql.pid).
1.目录权限问题
对mysql的安装目录和数据目录分别进行授权
# chown -R mysql.mysql /usr/local/mysql
# chown -R mysql.mysql /data/mysql
# service mysqld start
2.可能进程里已经存在mysql进程
解决方法:用命令“ps -ef|grep mysql”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysql
3.可能是残余数据影响了服务的启动。
去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧
数据备份还原问题归纳
1.解决mysql 数据库在迁移或还原数据过程中出现的如下报错(ERROR 1231 (42000): Variable 'time_zone' can't be set to the value of 'NULL'):
ERROR 1231 (42000): Variable 'time_zone' can't be set to the value of 'NULL' ERROR 1231 (42000): Variable 'sql_mode' can't be set to the value of 'NULL' ERROR 1231 (42000): Variable 'foreign_key_checks' can't be set to the value of 'NULL' ERROR 1231 (42000): Variable 'unique_checks' can't be set to the value of 'NULL' ERROR 1231 (42000): Variable 'character_set_client' can't be set to the value of 'NULL'
解决办法:
修改mysql配置文件:max_allowed_packet=1024M
查看目前配置:
show VARIABLES like '%max_allowed_packet%';
1M=1048576
修改方法
1、修改配置文件
可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。
如果找不到my.cnf可以通过
去寻找my.cnf文件。
linux下该文件在/etc/下。
重启mysql:
1、使用 service 启动:service mysqld restart
2、使用 mysqld 脚本启动:/etc/inint.d/mysqld restart
查看下max_allowed_packet是否编辑成功
注意:该值设置过小将导致单个记录超过限制后写入数据库失败,且后续记录写入也将失败。