热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

mysql主从复制全面解析及应用演练

Mysql复制Mysql内建的复制功能是构建大型、高性能应用程序的基

Mysql复制Mysql内建的复制功能是构建大型、高性能应用程序的基


主服务器:

[root@node1~]# ssh-keygen -t rsa -P '' [root@node1~]##ssh-copy-id -i .ssh/id_rsa.pub root@172.16.18.9

从服务器:

[root@node2~]# ssh-keygen -t rsa -P '' [root@node2~]##ssh-copy-id -i .ssh/id_rsa.pub root@172.16.18.7

2、编辑主从服务器的hosts文件:

[root@node1~]# vim /etc/hosts #####添加如下两项:############### 172.16.18.7node1.magedu.com node1 172.16.18.9node2.magedu.com node2 #####保存并复制至node2上:######## [root@node1~]# scp /etc/hosts 172.16.18.9:/etc

这里不在详细介绍了,请参考

(1)、创建用户 #groupadd -g 306 mysql #useradd -g mysql -u 306 -r mysql (2)、创建数据目录: #mkdir/mydata/data –pv (3)、更改数据目录权限: #chown -R mysql.mysql /mydata/data (4)、解压Mysql创建链接 #tar xfmysql-5.5.33-linux2.6-x86_64.tar.gz -C /usr/local #ln -svmysql-5.5.33-linux2.6-x86_64 mysql (5)、更改属主属组 #cd mysql #chown -R root:mysql./* (6)、初始化mysql #scripts/mysql_install_db--user=mysql --datadir=/mydata/data (7)、创建启动脚本并赋予权限 #cpsupport-files/mysql.server /etc/rc.d/init.d/mysqld #chmod +x/etc/rc.d/init.d/mysqld (8)、创建并修改配置文件 # cp support-files/my-large.cnf /etc/my.cnf # vim /etc/my.cnf 添加如下行指定mysql数据文件的存放位置: datadir = /mydata/data (9)、更改环境变量 #vim/etc/profile.d/mysql.sh 添加: exportPATH=/usr/local/mysql/bin:$PATH #./etc/profile.d/mysql.sh (10)、添加到服务列表中并启动mysql # chkconfig --addmysqld # service mysql start

5、配置主服务器:

(1)编辑配置文件:

[root@node1 ~]# vim /etc/my.cnf server-id = 1 #60行标识自己的ID号 log-bin=mysql-bin #52行二进制日志,默认是启动的 binlog_format=mixed #55行使用混合模式

(2)建立复制账号权限:

[root@node1 ~]# mysql mysql>GRANT REPLICATIONCLIENT,REPLICATION SLAVE ON *.* TO rpuser@'172.16.%.%' IDENTIFIED BY 'rpuser'; mysql> FLUSHPRIVILEGES; #刷新权限

6、配置从服务器:

(1)编辑配置文件:

[root@node2 ~]# vim /etc/my.cnf server-id = 20 #60行标识自己的ID号,和主服务器决不能相同 #log-bin=mysql-bin #52行关闭二进制日志 #binlog_format=mixed #55行关闭使用混合模式 #####设置从服务器为只读模式###### read-Only=1 #注意从服务器不可有写模式 #####添加中继日志################ relay-log=/mydata/data/relay-mysql #中继日志 relay-log-index=relay-mysql.index #中继日志索引文件

【relay-log日志记录的是在复制过程中,从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件,然后SQL线程会读取relay-log日志的内容并应用到从服务器。】

(2)、登录mysql查看线程:

查看启动线程

mysql> SHOWPROCESSLIST; +----+------+-----------+------+---------+------+-------+------------------+ | Id | User |Host | db | Command | Time | State | Info | +----+------+-----------+------+---------+------+-------+------------------+ | 1 | root | localhost | NULL | Query | 0| NULL | SHOW PROCESSLIST | +----+------+-----------+------+---------+------+-------+------------------+

根据结果显示:此时还未启动任何线程。

(3)、配置连接服务器:

命令参数解析:

mysql>helpCHANGE MASTER TO MASTER_BIND = 'interface_name' #将控制绑定在那个接口上 | MASTER_HOST = 'host_name' #主服务器地址 | MASTER_USER = 'user_name' #主服务器用户(刚才创建的) | MASTER_PASSWORD = 'password' #主服务器密码 | MASTER_PORT = port_num #工作端口 | MASTER_CONNECT_RETRY = interval #重试时间 | MASTER_HEARTBEAT_PERIOD = 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} #是否使用SSL功能 | 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' | MASTER_SSL_VERIFY_SERVER_CERT = {0|1} | IGNORE_SERVER_IDS = (server_id_list) #将某些ID号忽略掉

配置从服务器连接主服务器:

mysql> CHANGEMASTER TO MASTER_HOST='172.16.18.7', -> MASTER_USER='rpuser', -> MASTER_PASSWORD='rpuser';

(4)启动从服务器线程:

mysql> START SLAVE;

(5)查看从服务器工作状态

mysql> SHOWSLAVE STATUS\G ***************************1. row *************************** Slave_IO_State: Waiting formaster to send event #I/O状态;接受主服务器发送状态 Master_Host: 172.16.18.7 #主服务器用户账号 Master_User: rpuser #用户 Master_Port: 3306 #默认监听端口 Connect_Retry: 60 #重试时间间隔 Master_Log_File: mysql-bin.000002 #读取的二进制日志文件 Read_Master_Log_Pos: 107 #事件位置 Relay_Log_File:relay-mysql.000003 #当前读取的中继日志文件 Relay_Log_Pos: 253 Relay_Master_Log_File: mysql-bin.000002 Slave_IO_Running: Yes #I/O线程已启动 Slave_SQL_Running: Yes #SQL线程已启动 Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 107 Relay_Log_Space: 966 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 #落后主服务器时间 Master_SSL_Verify_Server_Cert:No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1

7、测试

推荐阅读
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • Django + Ansible 主机管理(有源码)
    本文给大家介绍如何利用DjangoAnsible进行Web项目管理。Django介绍一个可以使Web开发工作愉快并且高效的Web开发框架,能够以最小的代价构建和维护高 ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
author-avatar
永远的爱ye
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有