MySQL配置一主一从,实现高可用性(mysql 一主一从)
MySQL配置一主一从,实现高可用性
MySQL数据库作为目前最为流行的关系型数据库之一,广泛用于各种大型企业级应用中。但是,随着数据量的增加和访问量的提升,单节点部署的MySQL已经无法满足高可用性的需求。因此,配置一主一从的MySQL集群,已经成为保证数据的可靠性和高可用性的最佳选择。
本文将分享如何通过配置一主一从的MySQL集群,来实现高可用性。
一、安装MySQL
在主机和从机上都要安装MySQL,并配置好相关的环境变量。
二、修改主机的配置文件
1.在主机上,打开MySQL配置文件my.cnf,修改如下参数:
[mysqld]
server-id=1 # 主机的唯一IDlog-bin=/var/log/mysql/mysql-bin.log # 启用二进制日志,记录所有的操作记录
binlog-do-db=mydb # 指定要同步的数据库名称
2.重启MySQL服务:systemctl restart mysqld
三、修改从机的配置文件
1.在从机上,打开MySQL配置文件my.cnf,修改如下参数:
[mysqld]
server-id=2 # 从机的唯一IDrelay-log-index=/var/lib/mysql/relay-bin.index # 从机的日志序号文件
relay-log=/var/lib/mysql/relay-bin # 从机的中继日志文件,存储主机的二进制日志复制信息read-only=on # 从机设置为只读,保证不会影响主机的操作
2.重启MySQL服务:systemctl restart mysqld
四、在主机上授予从机权限
在主机上执行如下命令,授予重复用户权限。
grant replication slave on *.* to 'slave'@'从机IP' identified by 'password';
五、在从机上启动复制服务
在从机上执行如下命令,开启复制服务,连接到主机的MySQL服务。
change master to master_host='主机IP',master_user='slave',master_password='password',master_log_file='mysql-bin.000001',master_log_pos=0;
start slave;show slave status \G;
检查启动的复制服务是否正常工作,可以通过命令show slave status \G来查看。
六、测试主从复制
在主机上创建一个数据库(mydb),并在其上创建一个表(mytable),往表mytable中插入一条数据。
在从机上查看已同步的数据库、表和数据,验证主从复制是否正常工作。
七、总结
通过以上步骤,我们成功地配置了一主一从的MySQL集群,实现了高可用性。整个工程步骤非常简单,只需要稍加配置,就能够保证系统的可靠性,提升用户体验,为企业提供更好的服务。
下面是一主一从的MySQL集群的完整配置文件:
主机配置文件my.cnf:
[mysqld]
datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sock
server-id=1log-bin=/var/log/mysql/mysql-bin.log
binlog-do-db=mydb# Disabling symbolic-links is recommended to prevent assorted security risks
# symbolic-links=0sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysqld_safe]log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
从机配置文件my.cnf:
[mysqld]
datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sock
server-id=2relay-log-index=/var/lib/mysql/relay-bin.index
relay-log=/var/lib/mysql/relay-binread-only=on
# Disabling symbolic-links is recommended to prevent assorted security risks# symbolic-links=0
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysqld_safe]log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid