mysql互为主从复制

主从复制,步骤如下:

假设互为主从的两台mysql服务器是分别部署在同一机器上不同端口的应该用。

例如服务器ip为58.83.223.20

端口分别为:3306  与 3307

互为主从的话,两个服务都是master与slave;也就是下面的描述中,如果描述master的操作,那么个服务器都要做相应的操作。如果描述slave的操作,那么个服务器都要做相应的操作。

1、主从服务器分别作以下操作

1.1、版本一致;

1.2、初始化表,并在后台启动mysq; l

1.3、修改root的密码;

2、修改主服务器master:

my.ini

[mysqld]

log-bin=mysql-bin //[必须]启用二进制日志

server-id=222 //[必须]服务器唯一ID,默认是1,一般取IP最后一段与数据库端口

3、修改从服务器slave:

my.ini

[mysqld]

log-bin=mysql-bin //[必须]启用二进制日志

server-id=226  //[必须]服务器唯一ID,默认是1,一般取IP最后一段

4、重启两台服务器的mysql

/bin/mysql restart

5、在主服务器上建立帐户并授权slave:

mysql3306/bin/mysql -uroot -proot

mysql>GRANT REPLICATION SLAVE ON *.* to ‘mysync‘@‘%‘ identifiedby ‘mysync ‘; //一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。

mysql3307/bin/mysql -uroot -proot

mysql>GRANT REPLICATION SLAVE ON *.* to ‘mysync‘@‘%‘ identifiedby ‘mysync ‘; //一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。

6、登录主服务器的mysql,查询master的状态。这里的 File 与Position可能是实时变化的。

  mysql3306/bin/mysql -uroot -proot

   mysql>show master status;

+------------------+----------+--------------+------------------+

|File             |Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

|mysql-bin.000001      301|             |                 |

+------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

mysql3307/bin/mysql -uroot -proot

mysql>show master status;

+------------------+----------+--------------+------------------+

|File             |Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

|mysql-bin.000001|      107|             |                 |

+------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

7、配置从服务器Slave:

mysql3306/bin/mysql -uroot -proot

   mysql>
change master to master_host=‘58.83.234.21‘,master_port=3307,master_user=‘mysync‘,master_password=‘mysync‘,master_log_file=‘mysql-bin.000001‘,master_log_pos=107;

mysql3307/bin/mysql -uroot -proot

mysql> change master to master_host=‘58.83.234.21‘,master_port=3306,master_user=‘mysync‘,master_password=‘mysync‘,master_log_file=‘mysql-bin.000001‘,master_log_pos=301;

//注意不要断开,“107”与“301”无单引号。

//,master_log_file=‘mysql-bin.000001‘,master_log_pos=107;  是show master status;查出的。

//当两个mysql服务在同一台机器上时,master_port必须指定,否则会出现

如果些处出错:

ERROR 1201 (HY000): Could not initializemaster info structure; more error messages can be found in the MySQL error log。

下述直接写解法:

1mysql> resetslave; # 重点就是这行

2.mysql> change master to master_host=‘58.83.234.21‘,master_port=3307,master_user=‘mysync‘,master_password=‘mysync‘,master_log_file=‘mysql-bin.000020‘,master_log_pos=107;  # 请依照自行环境设定

重新设置 slave, MASTER_LOG_FILE
和 MASTER_LOG_POS
会被清空,
所以需要重新设置.

3.mysql> start slave; # 就正常了.

Mysql>start slave;    //启动从服务器复制功能

注:changemaster to语法说明:

changemaster tomaster_host=‘192.168.X.X‘,master_port=XXX,master_user=‘XXX‘,master_password=‘XXX‘,master_log_file=‘mysql-bin.0000XXX‘,master_log_pos=XXX;

CHANGEMASTER TO option [, option] ...

option:

MASTER_HOST = ‘host_name‘

| MASTER_USER = ‘user_name‘

| MASTER_PASSWORD = ‘password‘

| MASTER_PORT = port_num

| MASTER_CONNECT_RETRY = interval

| MASTER_LOG_FILE = ‘master_log_name‘

| MASTER_LOG_POS = master_log_pos

| RELAY_LOG_FILE = ‘relay_log_name‘

| RELAY_LOG_POS = relay_log_pos

| MASTER_SSL = {0|1}

| MASTER_SSL_CA = ‘ca_file_name‘

| MASTER_SSL_CAPATH = ‘ca_directory_name‘

| MASTER_SSL_CERT = ‘cert_file_name‘

| MASTER_SSL_KEY = ‘key_file_name‘

| MASTER_SSL_CIPHER = ‘cipher_list‘

8、检查从服务器复制功能状态:

mysql> show slave status\G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 58.83.223.20 //主服务器地址

Master_User:myrync         //授权帐户名,尽量避免使用root

Master_Port:3306           //数据库端口,部分版本没有此行

Connect_Retry: 60

Master_Log_File: mysql-bin.000004

Read_Master_Log_Pos:600        //#同步读取二进制日志的位置,大于等于>=Exec_Master_Log_Pos

Relay_Log_File: ddte-relay-bin.000003

Relay_Log_Pos: 251

Relay_Master_Log_File: mysql-bin.000004

Slave_IO_Running: Yes       //此状态必须YES

Slave_SQL_Running: Yes       //此状态必须YES

......

注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。

以上操作过程,主从服务器配置完成。

9、主从服务器测试:

主服务器Mysql,建立数据库,并在这个库中建表插入一条数据:

mysql> create database hi_db;

Query OK, 1 row affected (0.00 sec)

mysql> use hi_db;

Database changed

mysql>  create table hi_tb(id int(3),name char(10));

Query OK, 0 rows affected (0.00 sec)

mysql> insert into hi_tb values(001,‘bobu‘);

Query OK, 1 row affected (0.00 sec)

mysql> show databases;

+--------------------+

|Database           |

+--------------------+

| information_schema |

|hi_db             |

|mysql             |

|test              |

+--------------------+

4 rows in set (0.00 sec)

从服务器Mysql查询:

mysql> show databases;

+--------------------+

|Database           |

+--------------------+

| information_schema |

|hi_db             |          //I‘M here,大家看到了吧

| mysql             |

|test              |

+--------------------+

4 rows in set (0.00 sec)

mysql> use hi_db

Database changed

mysql> select * from hi_tb;    //可以看到在主服务器上新增的具体数据

+------+------+

| id   | name |

+------+------+

|    1 | bobu |

+------+------+

1 row in set (0.00 sec)

时间: 2024-08-07 00:39:27

mysql互为主从复制的相关文章

mysql互为主从复制配置笔记--未读,稍后学习

MySQL-master1:192.168.72.128 MySQL-master2:192.168.72.129 OS版本:CentOS 5.4MySQL版本:5.5.9(主从复制的master和slave服务器中的mysql版本相同或者master版本高于slave版本) 一.MySQL master-master配置 1.修改MySQL配置文件 两台MySQL均如要开启binlog日志功能,开启方法:在MySQL-master1  配置文件/etc/my.cnf  [MySQLd]段中加上

mysql互为主从复制配置笔记

MySQL-master1:192.168.72.128 MySQL-master2:192.168.72.129 OS版本:CentOS 5.4MySQL版本:5.5.9(主从复制的master和slave服务器中的mysql版本相同或者master版本高于slave版本) 一.MySQL master-master配置 1.修改MySQL配置文件 两台MySQL均如要开启binlog日志功能,开启方法:在MySQL-master1  配置文件/etc/my.cnf  [MySQLd]段中加上

mysql 互为主从复制常见问题

报错:1)change master导致的:              Last_IO_Error: error connecting to master - retry-time: 60  retries 2)    在没有解锁的情况下停止slave进程:     > stop slave;ERROR 1192 (HY000): Can't execute the given command because you have active locked tables or an active

MySQL互为主从+Keepalived高可用数据库集群

1.剧情回顾 在之前的博客上,我做了一个MySQL主从配置的实验,链接在这:http://blog.51cto.com/superpcm/2094958 .在这里我决定把这两个数据库做成互为主从,然后在这两个互为主从的数据库上配置keepalived,实现高可用,怎么配置可以参考我前文高可用的实验博客,http://blog.51cto.com/superpcm/2095395 . 最后实现的的拓扑图如下: 2.配置MySQL 互为主从复制 之前可能没有说明,实验默认都是开放所有端口给同一网段的

MySQL的主从复制是如何实现的

前言 MySQL的主从复制是MySQL本身自带的一个功能,不需要额外的第三方软件就可以实现,其复制功能并不是copy文件来实现的,而是借助binlog日志文件里面的SQL命令实现的主从复制,可以理解为我再Master端执行了一条SQL命令,那么在Salve端同样会执行一遍,从而达到主从复制的效果. MySQL主从复制架构图 一主一从 master-slave-replication-01 一主多从 master-slave-replication-02 级联 master-slave-repli

Keepalived+Mysql互为主从高可用安装配置

Keepalived+Mysql互为主从高可用安装配置环境介绍:keepalived_vip=192.168.1.210    (写虚拟ip)mysql_master01      eth0:192.168.1.211  eth1:172.20.27.211 (1核1G)mysql_master02      eth0:192.168.1.212  eth1:172.20.27.212 (1核1G) 1.安装mysql数据库(所有节点安装)  //此处省略安装mysql服务2.编辑my.cnf配

MySQL的主从复制与MySQL的主主复制

一.MySQL的主从复制 注意事项: 主节点必须开启二进制日志,在从节点上务必开启中继日志: 中继日志:从服务器上记录下来从主服务器的二进制日志文件同步过来的事件: 下面来做一个小的实验,两个空的数据库的主从复制 配置前注意事项:务必同步时间 ntpdate 172.18.0.1 如果服务开启先停止服务,清空数据 systemctl stop mariadb rm -rf /var/lib/mysql/* 实验演示: 1.主节点上的配置文件中定义如下 [server]              

MySQL的主从复制介绍及配置

1.MySQL主从复制介绍 MySQL数据库支持单向.双向.链式级联.环状等不同业务场景的复制.在复制过程中,一台服务器充当主服务器(Master),接收来自用户的内容更新,而一个或多个其他的服务器充当从服务器(Slave),接收来自主服务器binlog文件的日志内容,解析出SQL,重新更新到从数据库,使得主从服务器的数据达到一致. 如果设置了链式级联复制,那么从服务器本身除了充当从服务器外,也会同时充当其下面从服务器的主服务器,链式级联复制类似A->B->C的复制形式.在这里,只介绍主-&g

mysql/mariadb主从复制架构配置及过程中出现的问题

两台CentOS7系虚拟主机:分别是:主服务器172.16.75.1,从服务器172.16.75.2使用的是mariadb-5.5.56,即centOS自带的软件版本为了使实验结果显示精准,此处关闭两台服务器的防火墙和SELinux:[[email protected] ~]# setenforce 0[[email protected] ~]# iptables -F 一.首先在主服务器172.16.75.1上配置:在/etc/my.cnf中配置如下:[mysqld]###定义二进制日志的存放