Maison> base de données> tutoriel mysql> le corps du texte

实现MySQL的主从复制

coldplay.xixi
Libérer: 2020-08-29 16:45:30
avant
2802 Les gens l'ont consulté

实现MySQL的主从复制

相关学习推荐:mysql教程

测试服务器使用centos7.2进行相关配置

文章内容参考mysql数据库的主从同步,实现读写分离

概叙

大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器来处理如此多的数据库连接操作,数据库必然会崩溃,特别是数据丢失的话,后果更是不堪设想。这时候,我们会考虑如何减少数据库的连接,下面就进入我们今天的主题。

利用主从数据库来实现读写分离,从而分担主数据库的压力。在多个服务器上部署mysql,将其中一台认为主数据库,而其他为从数据库,实现主从同步。其中主数据库负责主动写的操作,而从数据库则只负责主动读的操作(slave从数据库仍然会被动的进行写操作,为了保持数据一致性),这样就可以很大程度上的避免数据丢失的问题,同时也可减少数据库的连接,减轻主数据库的负载。

安装mysql

服务器安装mysql我参考了以下两篇文章

Centos7.2安装Mysql5.7(阿里云)

Centos7 远程无法连接mysql数据库

在安装数据库过程中,由于远程无法连接踩了一些坑,首先在配置完成数据库后,需要数据库授权允许访问,然后打开防火墙设置,将3306端口打开,允许通过数据库管理工具通过端口访问数据库,我就是在没有设置打开防火墙这块一直踩坑。

在测试的两台服务器都分别安装了mysql,并同时导入测试数据库

主从复制配置

主服务器配置

修改主服务器mysql配置,文件位于/etc/my.cnf

#在[mysqld]中添加: server-id=1log_bin=master-bin log_bin_index=master-bin.index binlog_do_db=master #server-id 服务器唯一标识。 #log_bin 启动MySQL二进制日志,即数据同步语句,从数据库会一条一条的执行这些语句。 #binlog_do_db 指定记录二进制日志的数据库,即需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可。 #binlog_ignore_db 指定不记录二进制日志的数据库,即不需要复制的数据库名,如果有多个数据库,重复设置这个选项即可。 #其中需要注意的是,binlog_do_db和binlog_ignore_db为互斥选项,一般只需要一个即可。
Copier après la connexion

创建用户和权限

grant replication slave on.to masterbackup@’%’ identified by ‘123456’;

%通配符,表示任意IP都可访问主服务器,正式环境请配置指定从服务器IP

创建完成后,通过命令重启mysql服务

service mysql restart

通过命令show master status查看状态

实践实现MySQL主从复制

slave从服务器的配置

同样修改位于/etc/my.cnf目录下的配置

#在[mysqld]中添加: server-id=2relay-log=slave-relay-bin relay-log-index=slave-relay-bin.index #replicate-do-db=master #server-id 服务器唯一标识,如果有多个从服务器,每个服务器的server-id不能重复,跟IP一样是唯一标识,如果你没设置server-id或者设置为0,则从服务器不会连接到主服务器。 #relay-log 启动MySQL二进制日志,可以用来做数据备份和崩溃恢复,或主服务器挂掉了,将此从服务器作为其他从服务器的主服务器。 #replicate-do-db 指定同步的数据库,如果复制多个数据库,重复设置这个选项即可。若在master端不指定binlog-do-db,则在slave端可用replication-do-db来过滤。 #replicate-ignore-db 不需要同步的数据库,如果有多个数据库,重复设置这个选项即可。 #其中需要注意的是,replicate-do-db和replicate-ignore-db为互斥选项,一般只需要一个即可。
Copier après la connexion

通过命令重启mysql服务

service mysql restart

连接主数据库

#连接master主服务器 mysql> change master to master_host='103.246.246.225',master_port=3306,master_user='masterbackup',master_password='123456',master_log_file='master-bin.000001',master_log_pos=120;#master_host对应主服务器的IP地址。 #master_port对应主服务器的端口。 #master_log_file对应show master status显示的File列:master-bin.000001。 #master_log_pos对应show master status显示的Position列:120。
Copier après la connexion

启用slave同步数据

#启动slave数据同步 mysql> start slave;#停止slave数据同步(若有需要) mysql> stop slave;
Copier après la connexion

查看slave信息

通过命令show slave status\G;查看slave信息

实践实现MySQL主从复制

Slave_IO_Running和Slave_SQL_Running都为yes,则表示同步成功。

测试

实践实现MySQL主从复制

在随便一张数据表中插入一笔数据

实践实现MySQL主从复制

查看从数据库相应表

实践实现MySQL主从复制

可以查看到,从数据库已成功同步相应数据!!

想了解更多编程学习,敬请关注php培训栏目!

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:learnku.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!