详解mysql学习之主从复制
该文使用mysql5.5 centos6.5 64位
一、主从复制的作用
1、如果主服务器出现问题,可以快速切换到从服务器。
2、对与实时性要求不高或者更新不频繁的应用可以在从服务器上执行查询操作,降低主服务器的访问压力。将数据的读写进行分离从而达到负载的效果。
3、可以在从服务器进行数据备份操作,以避免备份期间对主服务器的影响。
主从复制原理:
原理解析:master服务器开启binlog日志,slave服务器通过master服务器授予的用户将master服务器产生的binlog日志读到本地并转为relaylog日志,然后执行relaylog日志。
二、搭建主从复制环境
master:192.168.6.224
slave:192.168.6.222
1、在主服务器中为从服务器设置授权用户
在主服务器中为从服务器192.168.6.222创建一个用户名为user2的用户,密码是123
mysql> grant all on *.* to user2@192.168.6.222 identified by "123";
参数解释:
grant:mysql授权关键字
*.* :所有库所有表
查看用户授权是否成功:
mysql> show grants for user2@192.168.6.222;
测试在slave服务器上使用user2能否登陆master服务器上的mysql
[root@localhost tmp]# mysql -uuser2 -p123 test -h192.168.6.224;
2、开启主服务器的bin-log日志并开设置server-id的值。
修改主服务器的my.cnf配置文件:
[mysqld] #开启mysql的bin-log日志 log-bin=mysql-bin #主服务器该值设置为1 server-id = 1
3、重置bin-log日志:mysql> reset master;
查看最新的bin-log日志状态看是否在起始位置: mysql> show master status;
mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000 001 | 107 | | | +------------------+----------+--------------+------------------+
4、备份主数据库数据
a、备份数据
b、更新bin-log日志
在这里我们使用mysqldump方式备份数据并使用 -l -F 参数直接在备份数据的时候设置读锁并更新bin-log日志
mysqldump -uroot -p111111 test -l -F > '/tmp/mysql_back/test.sql';
5、将主服务器备份的数据发送到slave服务器
[root@localhost tmp]# scp mysql_back/test.sql 192.168.6.222:/tmp/mysql_back/
6、重置slave服务器上的bin-log日志并在slave服务器中使用备份的数据
mysql> rester master;
[root@localhost tmp]# mysql -uroot -p111111 test -v -f
7、配置slave服务器中my.cnf参数
a、#配置从服务器server-id =2 (如果有多台从服务器则都有一个唯一的server-id)
server-id = 2
b、#开启bin-log日志
log-bin=mysql-bin
c、#配置需要同步的主机、用户名、密码、端口号
#配置需要同步的主机 master-host = 192.168.6.224 # The username the slave will use for authentication when connecting # to the master - required master-user = user2 # # The password the slave will authenticate with when connecting to # the master - required master-password = 123 # # The port the master is listening on. # optional - defaults to 3306 master-port = 3306
d、重启mysql让配置文件生效
[root@localhost tmp]# service mysqld restart
如果改方式无法重启mysql服务器可以使用下面的方式
mysql> change master to master_host="192.168.6.224", master_user="user2", master_password="123", master_port=3306, master_log_file="mysql-bin.000002",master_log_pos=107; mysql> slave start;
8、查看slave状态
mysql . row master .bin.relaybin.bin.
Master_Log_File:代表主机上用于主备同步的日志文件名,
Read_Master_Log_Pos:代表上一次成功同步到的日志文件中的位置。
如果这两项与先前在主服务器上看到的File及Position的值不相符,则无法正确进行同步。
三、测试
1、在master服务器添加数据并查看bin-log日志状态
mysql> insert into t1 values(13); Query OK, 1 row affected (0.02 sec) mysql> insert into t1 values(14); Query OK, 1 row affected (0.01 sec) mysql> insert into t1 values(15); Query OK, 1 row affected (0.01 sec) mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000002 | 656 | | | +------------------+----------+--------------+------------------+
2、查看slave同步状态
mysql> show slave status \G;*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.6.224 Master_User: user2 Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000002 Read_Master_Log_Pos: 656 Relay_Log_File: localhost-relay-bin.000002 Relay_Log_Pos: 802 Relay_Master_Log_File: mysql-bin.000002 Slave_IO_Running: Yes Slave_SQL_Running: Yes
在这里可以看到主服务器的Postion与从服务器的Read_Master_Log_Pos值相等且Slave_IO_Running,Slave_SQL_Running值都是 Yes 。这样mysql的主从配置成功。
四、主从复制常用命令
1、start slave #启动复制线程
2、stop slave #停止复制线程
3、show slave status #查看从数据库状态
4、show master logs;#查主数据库有哪些bin-log日志
5、change master to #动态改变到主服务器的配置
6、show processlist;#查看从数据库的运行进程
以上是详解mysql学习之主从复制的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

MySQL是一个开源的关系型数据库管理系统。1)创建数据库和表:使用CREATEDATABASE和CREATETABLE命令。2)基本操作:INSERT、UPDATE、DELETE和SELECT。3)高级操作:JOIN、子查询和事务处理。4)调试技巧:检查语法、数据类型和权限。5)优化建议:使用索引、避免SELECT*和使用事务。

可以通过以下步骤打开 phpMyAdmin:1. 登录网站控制面板;2. 找到并点击 phpMyAdmin 图标;3. 输入 MySQL 凭据;4. 点击 "登录"。

使用 Navicat Premium 创建数据库:连接到数据库服务器并输入连接参数。右键单击服务器并选择“创建数据库”。输入新数据库的名称和指定字符集和排序规则。连接到新数据库并在“对象浏览器”中创建表。右键单击表并选择“插入数据”来插入数据。

MySQL和SQL是开发者必备技能。1.MySQL是开源的关系型数据库管理系统,SQL是用于管理和操作数据库的标准语言。2.MySQL通过高效的数据存储和检索功能支持多种存储引擎,SQL通过简单语句完成复杂数据操作。3.使用示例包括基本查询和高级查询,如按条件过滤和排序。4.常见错误包括语法错误和性能问题,可通过检查SQL语句和使用EXPLAIN命令优化。5.性能优化技巧包括使用索引、避免全表扫描、优化JOIN操作和提升代码可读性。

可在 Navicat 中通过以下步骤新建 MySQL 连接:打开应用程序并选择“新建连接”(Ctrl N)。选择“MySQL”作为连接类型。输入主机名/IP 地址、端口、用户名和密码。(可选)配置高级选项。保存连接并输入连接名称。

直接从数据库中恢复被删除的行通常是不可能的,除非有备份或事务回滚机制。关键点:事务回滚:在事务未提交前执行ROLLBACK可恢复数据。备份:定期备份数据库可用于快速恢复数据。数据库快照:可创建数据库只读副本,在数据误删后恢复数据。慎用DELETE语句:仔细检查条件,避免误删数据。使用WHERE子句:明确指定要删除的数据。使用测试环境:在执行DELETE操作前进行测试。

Redis 使用单线程架构,以提供高性能、简单性和一致性。它利用 I/O 多路复用、事件循环、非阻塞 I/O 和共享内存来提高并发性,但同时存在并发性受限、单点故障和不适合写密集型工作负载的局限性。

MySQL是一种开源的关系型数据库管理系统,主要用于快速、可靠地存储和检索数据。其工作原理包括客户端请求、查询解析、执行查询和返回结果。使用示例包括创建表、插入和查询数据,以及高级功能如JOIN操作。常见错误涉及SQL语法、数据类型和权限问题,优化建议包括使用索引、优化查询和分表分区。
