广州明生医药有限公司


使用MySQL实现相同服务器主从复制简单易行 (mysql相同服务器主从复制)

网络编程 使用MySQL实现相同服务器主从复制简单易行 (mysql相同服务器主从复制) 10-13

MySQL是一种流行的开源关系型数据库管理系统,具有性能良好、应用广泛、易于学习等特点。MySQL支持主从复制技术,即将主服务器(Master)上的数据同步复制到从服务器(Slave)上,从而实现对数据的备份和负载均衡。使用MySQL实现相同服务器主从复制既可以提高系统的可靠性,也可以提高系统的性能和可扩展性,而且实现起来非常简单易行。

本文将介绍在相同的MySQL服务器上实现主从复制的步骤和注意事项。

步骤一:设置主服务器

需要在主服务器上设置一个账号,该账号用于从服务器复制数据。假设该账号为’master’,密码为’123456’。在MySQL命令行下执行以下两条语句:

“`

mysql>GRANT REPLICATION SLAVE ON *.* TO ‘master’@’%’ IDENTIFIED BY ‘123456’;

mysql>FLUSH PRIVILEGES;

“`

然后,需要到主服务器的配置文件(一般为my.cnf或my.ini)中添加以下配置项:

“`

[mysqld]

server-id=1

log-bin=mysql-bin

“`

其中,server-id是服务器的唯一标识,可以为任意数字。log-bin是开启二进制日志功能,用于记录所有数据修改操作。

在完成上述配置之后,需要重启MySQL服务器,才能使配置项生效。

步骤二:设置从服务器

接着,需要在从服务器上配置主从复制。假设从服务器上的MySQL版本与主服务器版本一致,从服务器的IP地址为192.168.1.2,用户名和密码和主服务器上的一致。在MySQL命令行下执行以下语句:

“`

mysql>CHANGE MASTER TO MASTER_HOST=’192.168.1.1′,MASTER_USER=’master’,MASTER_PASSWORD=’123456′,MASTER_LOG_FILE=’mysql-bin.000001′,MASTER_LOG_POS=107;

mysql>START SLAVE;

“`

其中,MASTER_HOST是主服务器的IP地址,MASTER_USER和MASTER_PASSWORD即为主服务器上配置的复制账号和密码。MASTER_LOG_FILE和MASTER_LOG_POS是主服务器当前二进制日志的名称和位置,可以通过主服务器上的命令SHOW MASTER STATUS;来获得。

执行START SLAVE命令后,从服务器开始与主服务器建立复制连接,复制主服务器上的数据。

注意事项

在实现主从复制的过程中,需要注意以下几点:

1. 主服务器和从服务器的MySQL版本必须一致,且需要开启二进制日志功能。

2. 配置主从复制之前,需要保证主服务器和从服务器之间的网络连通性。

3. 在主服务器上需要开放3306端口,以允许从服务器连接。

4. 在配置主从复制之前,需要保证主服务器上的数据是完整的,否则从服务器上的复制数据可能会出现错误。

5. 在主从复制运行的过程中,需要定期检查复制状态,以保证数据的安全性和准确性。

相同服务器的主从复制是MySQL中一种简单易行的数据备份和负载均衡技术。通过上述步骤的配置,可以在短时间内实现主从复制,并有效提高系统性能和可靠性。但需要注意在配置过程中的一些注意事项。

相关问题拓展阅读:

  • 如何在一台windows主机上搭建mysql主从复制

如何在一台windows主机上搭建mysql主从复制

1、首先要在本地建立两个mysql服务,指定不同的端口。我这里一个主(3306),一个从(3307)。

2、然后修改主配置文件:

server-id = 1

binlog-do-db=test #要同步的数据库

#binlog-ignore-db=mysql #不同步的数据库,如果指定了binlog-do-db这里应该可以不用指定的

log-bin=mysql-bin #要生成的二进制日记文件名腊指拍称

修改从配置文件:

server-id = 2

log-bin = mysql-bin

replicate-do-db=test

3、在主库添加一个用户 repl 并指定replication权限

create user ‘repl’@’127.0.0.1’ identified by ‘asdf’;

GRANT REPLICATION SLAVE ON *.* TO ‘repl’@’127.0.0.1’; — –这里我指定数据库(test.*)时报错,而指定全库(*.*)时会成功。

4、保持主从mysql的test数据库初始状态一致。

一般是先将所有的表加读锁,然后copy磁盘上的数据库文件夹。我这里直接停止服务,然后将数据文件拷贝过去。

5、在主数据库里面运行show master status;记下file和position字段对应的参数。

mysql> show master status;

+—-+++—-+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+—-+++—-+

| mysql-bin.| 107 | test | |

+—-+++—-+

1 row in set (0.00 sec)

6、在从库设置它的master:

mysql> change master to master_host=’127.0.0.1′,master_port=3306,master_user=’repl’,master_password=’asdf’,master_log_file=’mysql-bin.000001′,master_log_pos=107;

Query OK, 0 rows affected (0.19 sec)

这里的master_log_file和master_log_pos对应刚才show master status记下的参数。

7、在从库开启从数据库复制功能。

slave start;

mysql> slave start;

Query OK, 0 rows affected (0.00 sec)

在从库可以通过show slave status来查看一些参数。

8. 此时在主库创建表或插入数据,在逗没从库就会很快也能看到了。

— 主库

mysql> create table tianyc_02(b int);

Query OK, 0 rows affected (0.16 sec)

mysql> insert into tianyc_02 values(2023);

Query OK, 1 row affected (0.13 sec)

— 从库

mysql> show tables;

+–+

| Tables_in_test |

+–+

| tianyc_01 |

| tianyc_02 |

+–+

2 rows in set (0.00 sec)

mysql> select * from tianyc_02;

+——+

| b |

+——+

| 2023 |

+——+

1 row in set (0.00 sec)

同理,可以搭建第二、第三个从节点。轮羡

备注:两个服务的serve_id必须不同,否则在开启复制功能时会提示错误

mysql> slave start;

ERROR 1200 (HY000): The server is not configured as slave; fix in config file or with CHANGE MASTER TO

1、首先要在本地建立两个mysql服务(参考这里),指定不同的端口。腊指拍我这里一个主(3306),一个从(3307)。

2、然后修改主配置文件:

server-id = 1

binlog-do-db=test #要逗没同步的数据库

#binlog-ignore-db=mysql #不同步的数据库,如果指定了binlog-do-db这里应该可以不用指定的

log-bin=mysql-bin #要生成的二进制日记文件名称

修改从配置文件:

server-id = 2

log-bin = mysql-bin

replicate-do-db=test

3、在主库添加一个用户 repl 并指定replication权限

create user ‘repl’@’127.0.0.1’ identified by ‘asdf’;

GRANT REPLICATION SLAVE ON *.* TO ‘repl’@’127.0.0.1’; — –这里我指定数据库(test.*)时报错,而指定全库(*.*)时会成功。

4、保持主从mysql的test数据库初始状态一致。

一般是先将所有的表加读锁,然后copy磁盘上的数据库文件夹。我这里直接停轮羡止服务,然后将数据文件拷贝过去。

5、在主数据库里面运行show master status;记下file和position字段对应的参数。

mysql> show master status;

+—-+++—-+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+—-+++—-+

| mysql-bin.| 107 | test | |

+—-+++—-+

1 row in set (0.00 sec)

6、在从库设置它的master:

mysql> change master to master_host=’127.0.0.1′,master_port=3306,master_user=’repl’,master_password=’asdf’,master_log_file=’mysql-bin.000001′,master_log_pos=107;

Query OK, 0 rows affected (0.19 sec)

这里的master_log_file和master_log_pos对应刚才show master status记下的参数。

7、在从库开启从数据库复制功能。

slave start;

mysql> slave start;

Query OK, 0 rows affected (0.00 sec)

在从库可以通过show slave status来查看一些参数。

8. 此时在主库创建表或插入数据,在从库就会很快也能看到了。

— 主库

mysql> create table tianyc_02(b int);

Query OK, 0 rows affected (0.16 sec)

mysql> insert into tianyc_02 values(2023);

Query OK, 1 row affected (0.13 sec)

— 从库

mysql> show tables;

+–+

| Tables_in_test |

+–+

| tianyc_01 |

| tianyc_02 |

+–+

2 rows in set (0.00 sec)

mysql> select * from tianyc_02;

+——+

| b |

+——+

| 2023 |

+——+

1 row in set (0.00 sec)

同理,可以搭建第二、第三个从节点。

参考:

备注:两个服务的serve_id必须不同,否则在开启复制功能时会提示错误

mysql> slave start;

mysql相同服务器主从复制的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mysql相同服务器主从复制,使用MySQL实现相同服务器主从复制简单易行,如何在一台windows主机上搭建mysql主从复制的信息别忘了在本站进行查找喔。


编辑:广州明生医药有限公司

标签:主从,服务器,数据库,器上,数据