使用MySQL实现相同服务器主从复制简单易行 (mysql相同服务器主从复制)
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主从复制的信息别忘了在本站进行查找喔。
编辑:广州明生医药有限公司
标签:主从,服务器,数据库,器上,数据