MySQLはUbuntu 16.04で再起動に失敗しました


14

スクリプトを保存した後、MySQLを再起動しようとしています。エラー状態

Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.

ここで実行systemctl status mysql.serviceすると、次のようになります。

Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: activating (start-post) (Result: exit-code) since Isn 2016-09-26 17:15:28 MYT; 17s ago
  Process: 17478 ExecStart=/usr/sbin/mysqld (code=exited, status=1/FAILURE)
  Process: 17474 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 17478 (code=exited, status=1/FAILURE);         : 17479 (mysql-systemd-s)
   CGroup: /system.slice/mysql.service
           └─control
             ├─17479 /bin/bash /usr/share/mysql/mysql-systemd-start post
             └─17516 sleep 1

これをどこから修正したらよいかわかりません。

これは、mysqlを再起動する前に保存したスクリプトです。

[mysqld]
innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format = 'ROW'

実行journalctl -xe | tail -20するとこれが得られます:

Sep 26 17:46:29 guest mysqld[21937]: 2016-09-26T09:46:29.037709Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 5000)
Sep 26 17:46:29 guest mysqld[21937]: 2016-09-26T09:46:29.037798Z 0 [Warning] Changed limits: max_connections: 214 (requested 350)
Sep 26 17:46:29 guest mysqld[21937]: 2016-09-26T09:46:29.037809Z 0 [Warning] Changed limits: table_open_cache: 400 (requested 2000)
Sep 26 17:46:29 guest mysqld[21937]: 2016-09-26T09:46:29.187886Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
Sep 26 17:46:29 guest mysqld[21937]: 2016-09-26T09:46:29.189296Z 0 [Note] /usr/sbin/mysqld (mysqld 5.7.15-0ubuntu0.16.04.1-log) starting as process 21937 ...
Sep 26 17:46:29 guest mysqld[21937]: 2016-09-26T09:46:29.191216Z 0 [ERROR] You have enabled the binary log, but you haven't provided the mandatory server-id. Please refer to the proper server start-up parameters documentation
Sep 26 17:46:29 guest mysqld[21937]: 2016-09-26T09:46:29.191242Z 0 [ERROR] Aborting
Sep 26 17:46:29 guest mysqld[21937]: 2016-09-26T09:46:29.191255Z 0 [Note] Binlog end
Sep 26 17:46:29 guest mysqld[21937]: 2016-09-26T09:46:29.191300Z 0 [Note] /usr/sbin/mysqld: Shutdown complete
Sep 26 17:46:29 guest systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE
Sep 26 17:46:32 guest NetworkManager[878]: <info>  [1474883192.2910] device (eth0): Lowering IPv6 MTU (9000) to match device MTU (1500)

実行すると以下ulimit && ulimit -Saが得られます:

unlimited
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 128071
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 128071
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

1
の出力をjournalctl -xe | tail -50質問に追加できますか?
LDジェームズ

@LDJamesは出力全体ですか?かなり大きいです。それとも、最後の数ビットですか?
-Edd

出力は50行になります。実際には15行または20行で十分です。あなたは変更することができます-50にを-15。実際に問題が発生している行を必ず含めたいと思いました。
LDジェームズ

@LDJamesので、それがtailコマンドの目的です。journalctl -xe | tail -20出力を追加しました。
Edd

2
「エラー:バイナリログを有効にしました...」メッセージはどうですか?それをするつもりでしたか?MySQLはそこにサーバーIDを予期しますが、これはマスタースレーブのセットアップからのみ知っています。
ジョス

回答:


8

致命的な誤り:

Journalctlの出力が示すように、but you haven't provided the mandatory server-id. 以下のコードに示されているように必須IDを追加するため、MYQLを開始できません。

/etc/mysql/mysql.conf.d/mysqld.cnf
から変更する:

log-bin=mysql-bin
binlog-format = 'ROW'

への変更:

server-id=master-01
log-bin=mysql-bin
binlog-format = 'ROW'

これにより、目的のロギングの適切なフォーマットに対処しながら、サーバーが実行されます。

致命的でない警告:

エラーのオープンファイル制限については、編集した構成の需要を減らすか、システムの制限を増やす必要があります。

/etc/security/limits.conf

* soft nofile [new number]
* hard nofile [new number]

最初の列は、制限が適用されるWHOを説明しています。' 'はワイルドカードで、すべてのユーザーを意味します。ルートの制限を引き上げるには、「」の代わりに「ルート」を明示的に入力する必要があります

から取得:https :
//askubuntu.com/a/162230/29012


働いた!マスターデバイスであると明示的に述べているためですか?server-id = 1この前に入れてみましたが、うまくいきませんでした。
Edd

これらのことはどのファイルで変更する必要がありますか?
ビジェイシャルマ

以下のためのmysqlコンフィギュレーション・編集/etc/mysql/mysql.conf.d/mysqld.cnf。システムのためのopen files limit:を見て/etc/security/limits.conf 。この情報で回答を少し更新します。問題が解決した場合、お知らせください。このようにして、他の関連情報を回答に含めることができます。
LDジェームズ

2

同じエラーが発生しましたが、私の場合は単にディスクがいっぱいでした。これも必ず確認してください。

df -h --total

+1これは私にとってそれでした。スペースを解放して、サービスを開始します。
サイフ

0

次の方法で問題を解決します。

  1. スワップファイルの追加
  2. innodb_buffer_pool_size = 20M構成ファイル/etc/mysql/my.cnfを追加して、グループ内にあることを確認します

0

私の問題は、ホストのIPが変更されることです。

編集はそうbind-address/etc/mysql/my.cnf正しいものに。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.