加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

怎样实现MYSQL主从创建

发布时间:2023-07-29 13:15:50 所属栏目:MySql教程 来源:
导读:怎样实现MYSQL主从搭建,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一主单从步骤:1、配置master主机的my.cnf,配置内容如下:[mysqld]us

怎样实现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所在的节点机。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章