日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql问题处理积累

發布時間:2023/12/10 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql问题处理积累 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.mysql errors:message from server: "Host 'xxx' is blocked because of many connection errors; unblock

數據庫連接拋了異常:null,??message?from?server:?"Host?'PC-20130201IBXI'?is?blocked?because?of?many?connection?errors;?unblock?with?'mysqladmin?flush-hosts'"。

原因:同一個ip在短時間內產生太多(超過mysql數據庫max_connection_errors的最大值)中斷的數據庫連接而導致的阻塞;解決辦法如下:

mysqladmin -u root -p? flush-hosts

?

2.?MySQL 5.7.17 安裝報錯CMake Error at cmake/boost.cmake:81 (MESSAGE)

解決辦法是:
1).在/usr/local下創建一個名為boost的文件夾
????mkdir -p /usr/local/boost
2).進入這個新創建的文件夾然后下載boost
????wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
3).解壓
????tar -xvzf boost_1_59_0.tar.gz
4).繼續cmake,添加上紅色部分

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DCOMPILATION_COMMENT='Mysqlma' \
-DWITH_READLINE=ON \
-DWITH_BOOST=/usr/local/boost \
-DSYSCONFDIR=/data/mysqldata/3306 \
-DMYSQL_UNIX_ADDR=/data/mysqldata/3306/mysql.sock

?

3.Mysql重啟失敗原因剖析一

Timeout error occurred trying to start MySQL Daemon.

當修改完某些配置之后,打算/etc/init.d/mysqld restart,發現重啟失敗。

首先看mysql的日志文件查找原因:tail /var/log/mysqld.log

發現為用戶權限問題:

120724 15:52:02 [ERROR] /usr/libexec/mysqld: Can't create/write to file '/var/run/mysqld/mysqld.pid' (Errcode: 13)
120724 15:52:02 [ERROR] Can't start server: can't create PID file: Permission denied
120724 15:52:02??mysqld ended
========

solution

========

cd /var/lib/

ls -l | grep mysqld

看看用戶名和用戶組是否均為mysql,如果不是,則重新將權限調整回mysql默認值。

chown -R mysql:mysql mysqld

chmod 755 -R mysqld

現在試試重啟服務:/etc/init.d/mysqld start

?

如果重啟仍失敗,則還有可能是執行文件的權限還有問題:

cd /var/run/

ls -l | grep mysqld

看看用戶名和用戶組是否均為mysql,如果不是,則重新將權限調整回mysql默認值。

chown -R mysql:mysql mysqld

?

4.mysql數據庫通過yum安裝后啟動不了。如下:?

MySQL Daemon failed to start.
Starting mysqld: [FAILED]

查看日志

[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist?

輸入mysql_install_db命令后,重啟mysql成功。

[root@localhost etc]# mysql_install_db
Installing MySQL system tables...

[root@localhost etc]# service mysqld restart
Stopping mysqld: [ OK ]
Starting mysqld: [ OK ]

?

5.一次mysql slave故障的解決過程

mysql> show slave status\G?
Last_SQL_Error: Relay log read failure: Could not parse relay log event entry. The possible reasons are: the master’s binary log is corrupted (you can check this by running ‘mysqlbinlog’ on the binary log), the slave’s relay log is corrupted (you can check this by running ‘mysqlbinlog’ on the relay log), a network problem, or a bug in the master’s or slave’s MySQL code. If you want to check the master’s binary log or slave’s relay log, you will be able to know their names by issuing ‘SHOW SLAVE STATUS’ on this slave. Error_code: 1594?
看樣子,應該由于網絡原因 slave relay log損壞了

查看 mysql 日志:?
170306 12:34:08 [Note] Slave SQL thread initialized, starting replication in log ‘mysql-bin.000033’ at position 77270703, relay log ‘./HK3ASERVER-relay-bin.066281’ position: 10604437?
170306 12:34:08 [ERROR] Error in Log_event::read_log_event(): ‘read error’, data_len: 67, event_type: 19?
170306 12:34:08 [ERROR] Error reading relay log event: slave SQL thread aborted because of I/O error?
170306 12:34:08 [ERROR] Slave SQL: Relay log read failure: Could not parse relay log event entry. The possible reasons are: the master’s binary log is corrupted (you can check this by running ‘mysqlbinlog’ on the binary log), the slave’s relay log is corrupted (you can check this by running ‘mysqlbinlog’ on the relay log), a network problem, or a bug in the master’s or slave’s MySQL code. If you want to check the master’s binary log or slave’s relay log, you will be able to know their names by issuing ‘SHOW SLAVE STATUS’ on this slave. Error_code: 1594?
170306 12:34:08 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with “SLAVE START”.?We stopped at log ‘mysql-bin.000033’ position 77270703

mysql> stop slave;

mysql> change master to?Master_Log_File=’mysql-bin.000033’, Master_Log_Pos=77270703;?
This operation cannot be performed with a running slave; run STOP SLAVE first

mysql> show slave status\G?
發現IO_THREAD線程一直存在停不掉

最后,將mysql/data目錄下的 master.info 備走,重新啟動 mysql

mysql> show slave status\G?
發現 slave 已徹底停掉了

mysql> reset slave;?
mysql> change master to?Master_Log_File=’mysql-bin.000033’, Master_Log_Pos=77270703;?
mysql> start slave;?
Slave_IO_Running: Yes?
Slave_SQL_Running: Yes

slave 恢復正常

?

6.主從復制或主主復制時發生如下情況
Slave_IO_Running: Connecting

原因
1)網絡不通
2)pos位置不對
3)repl密碼不對
4) ?防火墻規則阻攔或者selinux沒關
5) ?server-id不對


7.mysql啟動失敗報錯之一

[ERROR] Can't create interrupt-thread (error 11, errno: 11)


Can't create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug'

InnoDB: Error: pthread_create returned 11

1.)直接處理方法,重啟服務器,刷新進程連接。

2.)修改max user processes?

ulimit ?-u 查看

修改/etc/security/limits.conf文件,添加:
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535 ? ? ? ? ?增加max user processes
* hard nproc 65535

查看/etc/security/limits.d目錄是否有文件“90-nproc.conf”,沒有的話新建該文件,文件,內容寫為:
* soft nproc 65535
* hard nproc 65535

退出(logout)重新登錄后,使用ulimit -a查看系統參數

?

?8.ERROR!?The?server?quit?without?updating?PID?file?(/usr/local/mysql/var/LNMP.pid)之一

[root@LNMP?~]#?/etc/init.d/mysql?start??

Starting?MySQL.?ERROR!?The?server?quit?without?updating?PID?file?(/usr/local/mysql/var/LNMP.pid).??

查看錯誤日志
  • root@LNMP?var]#?tail?-f?/usr/local/mysql/var/LNMP.err???
  • /usr/local/mysql/bin/mysqld:?Can't?create/write?to?file?'/tmp/ibJb9vcs'?(Errcode:?13)??
  • 161201??8:45:41??InnoDB:?Error:?unable?to?create?temporary?file;?errno:?13??
  • 161201??8:45:41?[ERROR]?Plugin?'InnoDB'?init?function?returned?error.??
  • 161201??8:45:41?[ERROR]?Plugin?'InnoDB'?registration?as?a?STORAGE?ENGINE?failed.??
  • 161201??8:45:41?[ERROR]?Unknown/unsupported?storage?engine:?InnoDB??
  • 161201??8:45:41?[ERROR]?Aborting ?
  • 161201??8:45:41?[Note]?/usr/local/mysql/bin/mysqld:?Shutdown?complete ???
  • 161201?08:45:41?mysqld_safe?mysqld?from?pid?file?/usr/local/mysql/var/LNMP.pid?ended??
  • 錯誤日志提示13錯誤,innodb不能創建臨時文件 解決方法 給臨時文件加777權限 root@LNMP?var]#?chmod?777?/tmp ?
    再次啟動mysql,mysql正常啟動!

    ?

    9.Starting MySQL...The server quit without updating PID file 之二

    1) 問題

    [root@localhost mysql]# /etc/rc.d/init.d/mysql status
    MySQL is not running, but lock file (/var/lock/subsys/mysql[FAILED]
    [root@localhost mysql]# /etc/rc.d/init.d/mysql start
    Starting MySQL...The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid).??????????????????????????????[FAILED]

    2 )原因

    沒有初始化權限表

    ?

    3 )解決辦法

    #cd /usr/local/mysql(進入mysql安裝目錄)
    #chown -R mysql.mysql .
    #su - mysql
    $cd server
    $scripts/mysql_install_db

    ?

    4 )解決過程

    [root@localhost ~]#?cd /usr/local/mysql

    [root@localhost mysql]#?chown -R mysql.mysql .
    [root@localhost mysql]#?su - mysql
    [mysql@localhost ~]$?cd /usr/local/mysql
    [mysql@localhost mysql]$?scripts/mysql_install_db
    Installing MySQL system tables...
    OK
    Filling help tables...
    OK

    To start mysqld at boot time you have to copy
    support-files/mysql.server to the right place for your system

    PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
    To do so, start the server, then issue the following commands:

    ./bin/mysqladmin -u root password 'new-password'
    ./bin/mysqladmin -u root -h localhost.localdomain password 'new-password'

    Alternatively you can run:
    ./bin/mysql_secure_installation

    which will also give you the option of removing the test
    databases and anonymous user created by default.??This is
    strongly recommended for production servers.

    See the manual for more instructions.

    You can start the MySQL daemon with:
    cd . ; ./bin/mysqld_safe &

    You can test the MySQL daemon with mysql-test-run.pl
    cd ./mysql-test ; perl mysql-test-run.pl

    Please report any problems with the ./bin/mysqlbug script!

    [mysql@localhost mysql]$?/usr/local/mysql/bin/mysqld_safe --user=mysql &
    [1] 11767
    [mysql@localhost mysql]$ 120502 07:01:17 mysqld_safe Logging to '/usr/local/mysql/data/localhost.localdomain.err'.
    120502 07:01:17 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
    [mysql@localhost mysql]$?/etc/rc.d/init.d/mysql status
    MySQL running (11830)??????????????????????????????????????[??OK??]
    [mysql@localhost mysql]$?/etc/rc.d/init.d/mysql start
    Starting MySQL?????????????????????????????????????????????[??OK??]

    ?

    10.Starting MySQL.. ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid)之三

    起因:在VM 上將一數據庫的數據文件(/var/lib/mysql整個文件夾)拷貝到另外一臺VM上,然后新的VM 上啟動MYSQL,結果報如下異常:(提示:冷備務必保證關閉服務)

    [root@localhost mysql]# service mysql start
    Starting MySQL.. ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).
    大部分的答案都是:
    1). 注釋/etc/my.cnf里的skip-federated注釋掉即#skip-federated;
    2). my.cnf文件配置過高,重新定義其中的參數(根據服務器情況定義);
    3). 殺掉mysql_safe和mysqld進程,然后再重啟;
    4). 當前日志文件過大,超出了my.cnf中定義的大小(默認為64M),刪除日志文件再重啟;

    5). 其他情況,查看日志文件(我的是localhost.localdomain.err,具體因人而異),然后具體分析;

    ?

    問題解決:

    其中,查看了日志內容,如下:

    [root@localhost mysql]# less localhost.localdomain.err?
    111203 22:09:03 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
    ^G/usr/sbin/mysqld: File './mysql-bin.index' not found (Errcode: 13)
    111203 22:09:03 [ERROR] Aborting

    111203 22:09:03 [Note] /usr/sbin/mysqld: Shutdown complete

    111203 22:09:03 mysqld_safe mysqld from pid file /var/lib/mysql/localhost.localdomain.pid ended

    ?

    但是我查看了我的目錄文件,mysql-bin.index文件是存在的呀,奇怪:

    [root@localhost mysql]# ll
    total 49828
    -rw-rw----. 1 mysql mysql 35651584 Dec ?3 17:55 ibdata1
    -rw-rw----. 1 mysql mysql ?5242880 Dec ?3 17:55 ib_logfile0
    -rw-rw----. 1 mysql mysql ?5242880 Dec ?3 15:45 ib_logfile1
    -rw-rw----. 1 mysql root ? ? ?1376 Dec ?3 22:02 localhost.localdomain.err
    drwx--x--x. 2 mysql mysql ? ? 4096 Dec ?3 17:55 mysql
    -rw-rw----. 1 mysql mysql ?4847020 Dec ?3 17:55 mysql-bin.000001
    -rw-rw----. 1 mysql mysql ? ? 1373 Dec ?3 17:56 mysql-bin.000002
    -rw-r--r--. 1 root ?root ? ? ? ?19 Dec ?3 15:38 mysql-bin.index
    drwx------. 2 mysql mysql ? ? 4096 Dec ?3 17:55 performance_schema
    -rw-r--r--. 1 root ?root ? ? ? 116 Nov 25 21:03 RPM_UPGRADE_HISTORY
    -rw-r--r--. 1 mysql mysql ? ? ?116 Nov 25 21:03 RPM_UPGRADE_MARKER-LAST
    drwxr-xr-x. 2 mysql mysql ? ? 4096 Dec ?3 17:55 test

    仔細看了下,咦?-rw-r--r--. 1 root ?root ? ? ? ?19 Dec ?3 15:38 mysql-bin.index----難道是權限不夠?于是將該文件加了寫權限,重啟,濤聲依舊!!!噢噢!

    難道是編碼問題?難道是....繼續猜測。。。問題還是沒解決,后來我做了一件事情,將mysql-bin.index文件刪除掉!或者修改其所有者所有組,重啟!

    [root@localhost mysql]# rm -rf mysql-bin.index?
    [root@localhost mysql]# ?
    [root@localhost mysql]# service mysql start
    Starting MySQL... SUCCESS!?

    ?

    補充:

    很多時候,我們在做主從同步的時候,將數據庫目錄整體打包拷貝到從機上的時候,重啟也往往會出現類似的問題,解決方法仍然是:

    1)給MYSQL數據庫數據目錄權限:chown -R mysql:mysql 目錄名稱

    2)務必保證MYSQL的進程是已經關閉了的

    ?

    另外要注意的地方就是:ib_*, mysql-bin-*, *.err(log文件)以及master-info和relay-info文件都是可以刪除的,相當于重新初始化數據庫的數據,但是前提是:

    1)操作前要先關掉MYSQL的進程;

    2)刪掉文件后要重新啟動MYSQL,如果有異常,請自行查看日志找問題,一般都比較好定位和解決。

    ?

    ?11.The server quit without updating PID file (/var/lib/mysql/tserver.pid).[FAILED] 之四

    ?查看日志

    [ERROR] InnoDB: auto-extending data file ./ibdata1 is of a different size 640 pages (rounded down to MB) than specified in the .cnf file: initial 768 pages, max 0 (relevant if non-zero) pages!
    [ERROR] InnoDB: Could not open or create the system tablespace. If you tried to add new data files to the system tablespace, and it failed here, you should now edit innodb_data_file_path in my.cnf back to what it was, and remove the new ibdata files InnoDB created in this failed attempt. InnoDB only wrote those files full of zeros, but did not yet use them in any way. But be careful: do not remove old data files which contain your precious data!
    [ERROR] Plugin 'InnoDB' init function returned error.
    [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
    [ERROR] Unknown/unsupported storage engine: InnoDB
    [ERROR] Aborting

    ?

    解決辦法:

    刪除了如下三個文件:

    [root@tserver mysql]# rm ibdata1? ib_logfile0? ib_logfile1?
    rm: remove regular file `ibdata1'? yes? ? ??
    rm: remove regular file `ib_logfile0'? yes
    rm: remove regular file `ib_logfile1'? yes

    重啟 OK

    ?

    12.啟動報錯 Neither host 'localhost.localdomain' nor 'localhost' could be looked up with...

    解決方法:

    查看cat /etc/hosts 發現什么文件也沒有,編輯內容相關配置。

    vim /etc/hosts 輸入以下內容:127.0.0.1localhost.localdomain localhost

    重啟 OK

    ?

    13.在執行scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldb命令時一直報錯:

    Can't locate Data/Dumper.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .)

    at scripts/mysql_install_db line 42. BEGIN failed--compilation aborted at scripts/mysql_install_db line 42.

    原因:

    Fedora 19中yum的prel包中沒有Dumper.pm文件。這時候只要執行以下命令就可以手動下載Dumper.pm文件

    yum install 'perl(Data::Dumper)'

    ?

    14.手動刪除binlog日志后啟動失敗,報錯如下:

    Failed to open log (file './mysql-bin.000002', errno 2)
    2018-01-16 13:59:13 4084 [ERROR] Could not open log file
    2018-01-16 13:59:13 4084 [ERROR] Can't init tc log

    解決辦法:刪除binlog索引文件

    rm ?-rf ?mysql-bin.index

    然后重啟即可

    ?

    15.CentOS7.2默認安裝mariadb-server

    報錯:Failed to start mysqld.service: Unit not
    found
    當輸入命令

    ~]# systemctl start mysql.service

    要啟動MySQL數據庫是卻是這樣的提示

    Failed to start mysqld.service: Unit not found

    原因:
    CentOS 7的yum源中貌似沒有正常安裝mysql時的mysql-sever文件,需要去官網上下載

    解決方法如下:

    ?

    方法一:(常用+實用)
    wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm?
    rpm -ivh mysql-community-release-el7-5.noarch.rpm

    service mysqld start

    ?

    方法二:

      首先需要安裝mariadb-server

      ~]# yum install -y mariadb-server

      啟動服務

      ~]# systemctl start mariadb.service

      添加到開機啟動

      ~]# systemctl enable mariadb.service

    進行一些安全設置,以及修改數據庫管理員密碼

      ~]# mysql_sceure_installation

    至此完成!

    可以測試一下

      ~]# mysql -u root -p



    ?

    后續積累中....

    ?

    轉載于:https://www.cnblogs.com/dannylinux/p/8082203.html

    總結

    以上是生活随笔為你收集整理的mysql问题处理积累的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。