mysql主從搭建
一主單從
步驟:
1、配置master主機的my.cnf,配置內容如下:
[mysqld]
user=mysql
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
port=3306
basedir=/usr
datadir=/var/lib/mysql
tmpdir=/tmp
log-bin=master-bin
log-bin-index=master-bin.index
server-id=1
配置完之後重啟,使my.cnf生效
建立複製使用者,並賦予replication slave許可權給slave節點
mysql> create user repl_user;
mysql> grant replication slave on *.* to repl_user@mt identified by xyzzy;
2、配置slave從機的my.cnf,配置內容如下:
[mysqld]
user=mysql
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
port=3306
basedir=/usr
datadir=/var/lib/mysql
tmpdir=/tmp
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
在slave上配置slave與master的連線
change master to
master_host='mo',
master_port='3306',
master_user'repl_user',
master_password='xyzzy',
master_log_file='mysql-bin.00002',
master_log_pos=101;
啟動slave
start slave
3、檢視slave的狀態
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: mo
Master_User: repl_user
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master-bin.000001
Read_Master_Log_Pos: 946
Relay_Log_File: slave-relay-bin.000002
Relay_Log_Pos: 1092
Relay_Master_Log_File: master-bin.000001
Slave_IO_Running: Yes
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: 946
Relay_Log_Space: 1247
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: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
1 row in set (0.00 sec)
如果Slave_IO_Running、Slave_SQL_Running均為yes則證明配置成功,如果有其中一個為no,如下所示:
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Connecting to master
Master_Host: mo
Master_User: repl_user
Master_Port: 3306
Connect_Retry: 60
Master_Log_File:
Read_Master_Log_Pos: 4
Relay_Log_File: slave-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File:
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: 0
Relay_Log_Space: 106
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: 2013
Last_IO_Error: error connecting to master 'repl_user@mo:3306' - retry-time: 60 retries: 86400
Last_SQL_Errno: 0
Last_SQL_Error:
1 row in set (0.00 sec)
則檢視Last_IO_Errno、Last_IO_Error引數,和datadir目錄下的hostname.err檔案找出錯誤日誌資訊,如下所示
[root@mt ~]# cd /var/lib/mysql/
[root@mt mysql]# ls
ibdata1 ib_logfile0 ib_logfile1 master.info mt.err mysql relay-log.info slave-relay-bin.000001 slave-relay-bin.index test
[root@mt mysql]# cd mt.err
-bash: cd: mt.err: Not a directory
[root@mt mysql]# tail -f n 200 mt.err
tail: cannot open `n' for reading: No such file or directory
tail: cannot open `200' for reading: No such file or directory
==> mt.err <==
160731 19:27:43 InnoDB: Initializing buffer pool, size = 8.0M
160731 19:27:43 InnoDB: Completed initialization of buffer pool
160731 19:27:43 InnoDB: Started; log sequence number 0 44233
160731 19:27:43 [Note] Event Scheduler: Loaded 0 events
160731 19:27:43 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.1.71' socket: '/var/run/mysqld/mysqld.sock' port: 3306 Source distribution
160731 19:47:02 [Note] 'CHANGE MASTER TO executed'. Previous state master_host='', master_port='3306', master_log_file='', master_log_pos='4'. New state master_host='mo', master_port='3306', master_log_file='', master_log_pos='4'.
160731 19:47:09 [Note] Slave SQL thread initialized, starting replication in log 'FIRST' at position 0, relay log './slave-relay-bin.000001' position: 4
160731 19:47:09 [ERROR] Slave I/O: error connecting to master 'repl_user@mo:3306' - retry-time: 60 retries: 86400, Error_code: 2005
160731 21:13:09 [ERROR] Slave I/O: error connecting to master 'repl_user@mo:3306' - retry-time: 60 retries: 86400, Error_code: 2013
上述錯誤為repl_user沒有給slave機replication slave許可權
可以檢視
select user,host,password from mysql.user;
看到user在哪個host上可以登陸,如果repl_user對應的host沒有slave節點對應的主機名,則repl_user使用者無法在slave機上進行遠端連線到master所在的節點機。
可以使用show binary logs檢視logbin的日誌資訊
可以使用show master status \G 檢視主節點資訊
步驟:
1、配置master主機的my.cnf,配置內容如下:
[mysqld]
user=mysql
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
port=3306
basedir=/usr
datadir=/var/lib/mysql
tmpdir=/tmp
log-bin=master-bin
log-bin-index=master-bin.index
server-id=1
配置完之後重啟,使my.cnf生效
建立複製使用者,並賦予replication slave許可權給slave節點
mysql> create user repl_user;
mysql> grant replication slave on *.* to repl_user@mt identified by xyzzy;
2、配置slave從機的my.cnf,配置內容如下:
[mysqld]
user=mysql
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
port=3306
basedir=/usr
datadir=/var/lib/mysql
tmpdir=/tmp
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
在slave上配置slave與master的連線
change master to
master_host='mo',
master_port='3306',
master_user'repl_user',
master_password='xyzzy',
master_log_file='mysql-bin.00002',
master_log_pos=101;
啟動slave
start slave
3、檢視slave的狀態
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: mo
Master_User: repl_user
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master-bin.000001
Read_Master_Log_Pos: 946
Relay_Log_File: slave-relay-bin.000002
Relay_Log_Pos: 1092
Relay_Master_Log_File: master-bin.000001
Slave_IO_Running: Yes
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: 946
Relay_Log_Space: 1247
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: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
1 row in set (0.00 sec)
如果Slave_IO_Running、Slave_SQL_Running均為yes則證明配置成功,如果有其中一個為no,如下所示:
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Connecting to master
Master_Host: mo
Master_User: repl_user
Master_Port: 3306
Connect_Retry: 60
Master_Log_File:
Read_Master_Log_Pos: 4
Relay_Log_File: slave-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File:
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: 0
Relay_Log_Space: 106
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: 2013
Last_IO_Error: error connecting to master 'repl_user@mo:3306' - retry-time: 60 retries: 86400
Last_SQL_Errno: 0
Last_SQL_Error:
1 row in set (0.00 sec)
則檢視Last_IO_Errno、Last_IO_Error引數,和datadir目錄下的hostname.err檔案找出錯誤日誌資訊,如下所示
[root@mt ~]# cd /var/lib/mysql/
[root@mt mysql]# ls
ibdata1 ib_logfile0 ib_logfile1 master.info mt.err mysql relay-log.info slave-relay-bin.000001 slave-relay-bin.index test
[root@mt mysql]# cd mt.err
-bash: cd: mt.err: Not a directory
[root@mt mysql]# tail -f n 200 mt.err
tail: cannot open `n' for reading: No such file or directory
tail: cannot open `200' for reading: No such file or directory
==> mt.err <==
160731 19:27:43 InnoDB: Initializing buffer pool, size = 8.0M
160731 19:27:43 InnoDB: Completed initialization of buffer pool
160731 19:27:43 InnoDB: Started; log sequence number 0 44233
160731 19:27:43 [Note] Event Scheduler: Loaded 0 events
160731 19:27:43 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.1.71' socket: '/var/run/mysqld/mysqld.sock' port: 3306 Source distribution
160731 19:47:02 [Note] 'CHANGE MASTER TO executed'. Previous state master_host='', master_port='3306', master_log_file='', master_log_pos='4'. New state master_host='mo', master_port='3306', master_log_file='', master_log_pos='4'.
160731 19:47:09 [Note] Slave SQL thread initialized, starting replication in log 'FIRST' at position 0, relay log './slave-relay-bin.000001' position: 4
160731 19:47:09 [ERROR] Slave I/O: error connecting to master 'repl_user@mo:3306' - retry-time: 60 retries: 86400, Error_code: 2005
160731 21:13:09 [ERROR] Slave I/O: error connecting to master 'repl_user@mo:3306' - retry-time: 60 retries: 86400, Error_code: 2013
上述錯誤為repl_user沒有給slave機replication slave許可權
可以檢視
select user,host,password from mysql.user;
看到user在哪個host上可以登陸,如果repl_user對應的host沒有slave節點對應的主機名,則repl_user使用者無法在slave機上進行遠端連線到master所在的節點機。
可以使用show binary logs檢視logbin的日誌資訊
可以使用show master status \G 檢視主節點資訊
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29802484/viewspace-2123073/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MYSQL主從搭建5.6.38MySql
- Docker 方式 MySQL 主從搭建DockerMySql
- mysql主從複製搭建MySql
- mysql主從搭建切換MySql
- MySQL(14)---Docker搭建MySQL主從複製(一主一從)MySqlDocker
- MYSQL5.6.40原始碼安裝 主從搭建 主主搭建MySql原始碼
- mysql雙主雙從 搭建配置MySql
- 新環境搭建Mysql主從MySql
- MYSQL主從複製的搭建MySql
- 記一次 MySQL 主從搭建MySql
- 基於GTID搭建主從MySQLMySql
- Mysql主從複製原理及搭建MySql
- MySql雙主一從服務搭建MySql
- 簡單搭建MySQL主從複製MySql
- MYSQL 主從 + ATLAS 讀寫分離 搭建MySql
- mysql主從複製的理解和搭建MySql
- mysql 5.7 主從複製搭建及原理MySql
- MySQL 5.7 用mysqldump搭建gtid主從MySql
- 【Mysql】Mariadb多主一從的搭建MySql
- MySQL 5.7 用xtrabackup搭建gtid主從MySql
- rpm 安裝5.6 MySql主從搭建MySql
- MySQL-主從複製之搭建主資料庫MySql資料庫
- mysql之 mysql 5.6不停機主從搭建(一主一從基於GTID複製)MySql
- MySQL-主從複製之搭建從資料庫MySql資料庫
- Tony 老師搭建 MySQL 主從伺服器MySql伺服器
- 基於Linux的docker mysql主從搭建LinuxDockerMySql
- MySQL主從配置及haproxy和keepalived搭建MySql
- docker-compase搭建mysql主從複製DockerMySql
- mysql 主從複製搭建詳細步驟MySql
- mysql之 mysql 5.6不停機主從搭建(一主一從基於日誌點複製)MySql
- Redis主從搭建Redis
- MySQL主從MySql
- MySQL 5.7 基於GTID搭建主從複製MySql
- MYSQL5.7.22 原始碼安裝 主從搭建MySql原始碼
- 搭建MySQL主從實現Django讀寫分離MySqlDjango
- Docker Compose搭建MySQL主從複製叢集DockerMySql
- MYSQL主主複製的搭建MySql
- MYSQL8+CENTOS7.6 主從+keepalived搭建總結MySqlCentOS