2017-07-20 12 views
6

this tutorialを使用してローカルマシンにマスタスレーブレプリケーションを設定しようとしています。エラー:1台のマシンでマスタスレーブレプリケーションを設定するときに、サーバでBinloggingが有効でない

私は終わりに近いですが、私は--master-data=2を使用してmysqldumpを実行しようとすると、私は私が遭遇してきたすべてのソリューションは、私が行っているmy.cnflog_bin = /var/log/mysql/mysql-bin.logを追加すると述べているエラー

mysqldump: Error: Binlogging on server not active 

を取得それは問題を解決していないようです。

これは私のmy.cnfファイルです:

[client] 
port   = 3306 
socket   = /var/run/mysqld/mysqld.sock 

[mysqld_safe] 
pid-file  = /var/run/mysqld/mysqld.pid 
socket   = /var/run/mysqld/mysqld.sock 
nice   = 0 

[mysqld_multi] 
mysqld  = /usr/bin/mysqld_safe 
mysqladmin = /usr/bin/mysqladmin 
user  = multi_admin 
password = multipass 

[mysqld2] 
user   = mysql 
pid-file  = /var/run/mysqld/mysqld_slave.pid 
socket   = /var/run/mysqld/mysqld_slave.sock 
port   = 3307 
basedir   = /usr 
datadir   = /var/lib/mysql_slave 
tmpdir   = /tmp 
lc-messages-dir = /usr/share/mysql 
explicit_defaults_for_timestamp 
server-id = 2 
relay-log = /var/log/mysql_slave/relay-bin 
relay-log-index = /var/log/mysql_slave/relay-bin.index 
master-info-file = /var/log/mysql_slave/master.info 
relay-log-info-file = /var/log/mysql_slave/relay-log.info 
read_only = 1 

[mysqld1] 
user   = mysql 
pid-file  = /var/run/mysqld/mysqld.pid 
socket   = /var/run/mysqld/mysqld.sock 
port   = 3305 
basedir   = /usr 
datadir   = /var/lib/mysql 
tmpdir   = /tmp 
lc-messages-dir = /usr/share/mysql 
explicit_defaults_for_timestamp 
server-id = 1 
log_bin  = /var/log/mysql/mysql-bin.log 
innodb_flush_log_at_trx_commit = 1 
sync_binlog = 1 
binlog-format = ROW 

# Instead of skip-networking the default is now to listen only on 
# localhost which is more compatible and is not less secure. 
bind-address = 0.0.0.0 

log-error  = /var/log/mysql/error.log 

# Disabling symbolic-links is recommended to prevent assorted security risks 
symbolic-links=0 

# * IMPORTANT: Additional settings that can override those from this file! 
# The files must end with '.cnf', otherwise they'll be ignored. 

!includedir /etc/mysql/conf.d/ 
+1

mysqlサーバを再起動しましたか? – Yupik

+0

はい、数回 –

答えて

1

私はあなたがmysql_multiを放棄し、ドッカー溶液で行くことを示唆している可能性があります。これにより、別のmy.cnfファイルを持つことができます。が問題の一部になることがあります。

マスターとスレーブ用にすでに設定された一対のDockerイメージがある場合もあります。私はGaleraのクラスタリングがあると確信しています。

私は実験のためだけに1台のサーバーにM-Sをセットアップしているとしますか?プロダクションのためにそうすることは事実上役に立たない。

-1

これは、単一のmysqlイメージで行うことができます。下記のドッキングウィンドウ・コンファイル

ドッキングウィンドウ-compose.yml

version: '2' 
services: 
    mysqlmaster: 
    image: mysql:5.7.15 
    environment: 
     - "MYSQL_ROOT_PASSWORD=root" 
    volumes: 
     - ./data/mysql-master:/var/lib/mysql/ 
     - ./config/mysql-master:/etc/mysql/conf.d/ 
    mysqlslave: 
    image: mysql:5.7 
    environment: 
     - "MYSQL_ROOT_PASSWORD=root" 
    volumes: 
     - ./data/mysql-slave:/var/lib/mysql/ 
     - ./config/mysql-slave:/etc/mysql/conf.d/ 
    mysqlconfigure: 
    image: mysql:5.7.15 
    environment: 
     - "MYSQL_SLAVE_PASSWORD=root" 
     - "MYSQL_MASTER_PASSWORD=root" 
     - "MYSQL_ROOT_PASSWORD=root" 
     - "MYSQL_REPLICATION_USER=repl" 
     - "MYSQL_REPLICATION_PASSWORD=repl" 
    volumes: 
     - ./mysql_connector.sh:/tmp/mysql_connector.sh 
    command: /bin/bash -x /tmp/mysql_connector.sh 

mysql_connector.shを使用

#!/bin/bash 
BASE_PATH=$(dirname $0) 

echo "Waiting for mysql to get up" 
# Give 60 seconds for master and slave to come up 
sleep 60 

echo "Create MySQL Servers (master/slave repl)" 
echo "-----------------" 


echo "* Create replication user" 

mysql --host mysqlslave -uroot -p$MYSQL_SLAVE_PASSWORD -AN -e 'STOP SLAVE;'; 
mysql --host mysqlslave -uroot -p$MYSQL_MASTER_PASSWORD -AN -e 'RESET SLAVE ALL;'; 

mysql --host mysqlmaster -uroot -p$MYSQL_MASTER_PASSWORD -AN -e "CREATE USER '$MYSQL_REPLICATION_USER'@'%';" 
mysql --host mysqlmaster -uroot -p$MYSQL_MASTER_PASSWORD -AN -e "GRANT REPLICATION SLAVE ON *.* TO '$MYSQL_REPLICATION_USER'@'%' IDENTIFIED BY '$MYSQL_REPLICATION_PASSWORD';" 
mysql --host mysqlmaster -uroot -p$MYSQL_MASTER_PASSWORD -AN -e 'flush privileges;' 


echo "* Set MySQL01 as master on MySQL02" 

MYSQL01_Position=$(eval "mysql --host mysqlmaster -uroot -p$MYSQL_MASTER_PASSWORD -e 'show master status \G' | grep Position | sed -n -e 's/^.*: //p'") 
MYSQL01_File=$(eval "mysql --host mysqlmaster -uroot -p$MYSQL_MASTER_PASSWORD -e 'show master status \G'  | grep File  | sed -n -e 's/^.*: //p'") 
MASTER_IP=$(eval "getent hosts mysqlmaster|awk '{print \$1}'") 
echo $MASTER_IP 
mysql --host mysqlslave -uroot -p$MYSQL_SLAVE_PASSWORD -AN -e "CHANGE MASTER TO master_host='mysqlmaster', master_port=3306, \ 
     master_user='$MYSQL_REPLICATION_USER', master_password='$MYSQL_REPLICATION_PASSWORD', master_log_file='$MYSQL01_File', \ 
     master_log_pos=$MYSQL01_Position;" 

echo "* Set MySQL02 as master on MySQL01" 

MYSQL02_Position=$(eval "mysql --host mysqlslave -uroot -p$MYSQL_SLAVE_PASSWORD -e 'show master status \G' | grep Position | sed -n -e 's/^.*: //p'") 
MYSQL02_File=$(eval "mysql --host mysqlslave -uroot -p$MYSQL_SLAVE_PASSWORD -e 'show master status \G'  | grep File  | sed -n -e 's/^.*: //p'") 

SLAVE_IP=$(eval "getent hosts mysqlslave|awk '{print \$1}'") 
echo $SLAVE_IP 
mysql --host mysqlmaster -uroot -p$MYSQL_MASTER_PASSWORD -AN -e "CHANGE MASTER TO master_host='mysqlslave', master_port=3306, \ 
     master_user='$MYSQL_REPLICATION_USER', master_password='$MYSQL_REPLICATION_PASSWORD', master_log_file='$MYSQL02_File', \ 
     master_log_pos=$MYSQL02_Position;" 

echo "* Start Slave on both Servers" 
mysql --host mysqlslave -uroot -p$MYSQL_SLAVE_PASSWORD -AN -e "start slave;" 

echo "Increase the max_connections to 2000" 
mysql --host mysqlmaster -uroot -p$MYSQL_MASTER_PASSWORD -AN -e 'set GLOBAL max_connections=2000'; 
mysql --host mysqlslave -uroot -p$MYSQL_SLAVE_PASSWORD -AN -e 'set GLOBAL max_connections=2000'; 

mysql --host mysqlslave -uroot -p$MYSQL_MASTER_PASSWORD -e "show slave status \G" 

echo "MySQL servers created!" 
echo "--------------------" 
echo 
echo Variables available fo you :- 
echo 
echo MYSQL01_IP  : mysqlmaster 
echo MYSQL02_IP  : mysqlslave 

あなたは私のGitのレポから上記のコードを取得することができますhttps://github.com/tarunlalwani/docker-compose-mysql-master-slave

PS:コンテンツがの私の記事から取得されました10

関連する問題