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配置段进行修改。

代码如下:
max_allowed_packet = 250M


如果找不到my.cnf可以通过

代码如下:
mysql --help | grep my.cnf


去寻找my.cnf文件。
linux下该文件在/etc/下。

重启mysql:

1、使用 service 启动:service mysqld restart
2、使用 mysqld 脚本启动:/etc/inint.d/mysqld restart

查看下max_allowed_packet是否编辑成功

注意:该值设置过小将导致单个记录超过限制后写入数据库失败,且后续记录写入也将失败。

posted @ 2022-09-07 16:42  聆听说书人  阅读(116)  评论(0编辑  收藏  举报