怎样实现MYSQL主从搭建


怎样实现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 查看主节点信息
关于怎样实现MYSQL主从搭建问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注开发云行业资讯频道了解更多相关知识。

相关推荐: MySQL连接超时相关的两个参数interactive_timeout和wait_timeout的区别及解释

本篇内容主要讲解“MySQL连接超时相关的两个参数interactive_timeout和wait_timeout的区别及解释”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL连接超时相关的两个参数inter…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/27 11:32
下一篇 06/27 11:32

相关推荐