怎样实现MYSQL主从搭建
发布时间:2021-12-18 14:33:50 所属栏目:MySql教程 来源:互联网
导读:怎样实现MYSQL主从搭建,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 一主单从 步骤: 1、配置master主机的my.cnf,配置内容如下: [mysqld] user=mysql pid-file=/var/run/mysqld/m
怎样实现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主从搭建问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。 (编辑:淮安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
热点阅读