質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Server+

Server+は、IT業界団体CompTIAが認定しているサーバー業務に関する資格です。サーバーのHW/SW構築・メンテナンス・仮想化など、サーバー運営上の運用・管理において幅広く対応できるスキルを評価します。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Q&A

解決済

1回答

4799閲覧

Mysql(MariaDB)レプリケーションで、Server-IDが一緒だと言われてしまう。

_I--

総合スコア4

Server+

Server+は、IT業界団体CompTIAが認定しているサーバー業務に関する資格です。サーバーのHW/SW構築・メンテナンス・仮想化など、サーバー運営上の運用・管理において幅広く対応できるスキルを評価します。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

0グッド

0クリップ

投稿2020/08/28 06:02

編集2020/08/28 07:47

実現したいこと、やってみたこと

  • [環境]

CentOS 7.6
MySQL 10.4.14

メールサーバを送信用と受信用で分けるために、DBのレプリケーションしたいと考えています。(PostfixのDB)
公式サイトをもとにやってみました。
今回DB自体触るのが初めてなため、理解が及んでいない発言をするかもしれませんが、その際はご指摘いただけると幸いです。

※本番環境ではなく、vagrantで立てています。SSHでそれぞれつながるようにはなっています。
(masterdb-server:192.168.33.121)
(slavedb-server:192.168.33.131)

[masterdb-serverにて]
/etc/my.conf

[mysqld] log-bin server_id=101 log-basename=master101 binlog-format=mixed
MariaDB[postfix]> CREATE USER 'replication_user'@'%' IDENTIFIED BY 'xxxxxxxx'; MariaDB[postfix]> GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';

※Mysqlにて SHOW MASTER STATUS \Gを確認してみると、

MariaDB [postfix]> show master status \G Empty set (0.000 sec) ```となってしまう。 **[slavedb-serverにて]** /etc/my.conf

[mysqld]
log-bin
server_id=102

MariaDB[postfix]>CHANGE MASTER TO
->MASTER_HOST='192.168.33.121',
->MASTER_USER='replication_user',
->MASTER_PASSWORD='xxxxxxxx',
->MASTER_LOG_FILE='mariadb-log',
->MASTER_LOG_POS=4;

MariaDB[postfix]>CHANGE MASTER TO MASTER_USE_GTID = slave_pos;
MariaDB[postfix]>START SLAVE;
MariaDB[postfix]>SHOW SLAVE STATUS \G;
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: 192.168.33.121
Master_User: replication_user
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mariadb-log
Read_Master_Log_Pos: 4
Relay_Log_File: servername-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mariadb-log
Slave_IO_Running: No
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 4
Relay_Log_Space: 256
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 1593
Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work
(or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_SSL_Crl:
Master_SSL_Crlpath:
Using_Gtid: Slave_Pos
Gtid_IO_Pos:
Replicate_Do_Domain_Ids:
Replicate_Ignore_Domain_Ids:
Parallel_Mode: conservative
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
Slave_DDL_Groups: 0
Slave_Non_Transactional_Groups: 0
Slave_Transactional_Groups: 0
1 row in set (0.000 sec)
ERROR: No query specified

という具合にエラーが出てしまいました。 ### 解決したいこと その1. /etc/my.cnfにてserver-idを変更したはずなのに、同じといわれるのは、なぜなのか。またどこを直せばこのエラーはなくなるのか。 **解決済み** その2. masterdb-serverにて、SHOW MASTER STATUS \G とやると、empty setとなってしまうのはなぜか。 (その1が解決したが、masterdb-serverでバイナリログが開けないというログが出てしまった。)

Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Binary log is not open'

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

show variables like 'server_id';をしてidの変更が反映されているか確認しましょう
反映されていないようならmysqlを再起動しましょう
再起動しても反映されないのなら、conf.dとかmy.cnf.dの配下のファイルでID/UUIDを設定しているかもしれないのでそれらの値を変更しましょう

投稿2020/08/28 07:28

hentaiman

総合スコア6426

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

_I--

2020/08/28 07:33

コメントありがとうございます。 今確認したところ、自分は'server_id'を'server-id'としていました。お恥ずかしい。。。 my.confではいくら変更したところで変化がなかったので、Mysqlでset global server_idにて設定しました。 これだとうまくいきました。
hentaiman

2020/08/28 07:41

それで上手くいったのなら100%スペルミスですね。 .cnf書き直してrestartすればOKですね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問