Mysql主从复制简单配置
最近在学习MySQL的主从复制,想将其应用到工作中的项目上。因为也是刚开始接触,所以理解的不是很深入,只能先分享一下如何做一个简单配置。
刚开始我们先配置一个主服务器和一个从服务器的情况,在使用一段时间以后再加入一个从服务器。
主服务器(master)的配置
首先我们进行主服务器的配置。
1. 打开MySQL的配置文件my.cnf 在配置文件中配置如下两个选项
[mysqld]
log-bin = mysql-bin
server-id = 1//注意这里的server-id,在一组主从服务器中,每个服务器(不管是主服务器还是从服务器)都有一个id,并且此id是唯一的,个服务器之间不能相同。如果不配置此项,那该主服务器的server-id默认为0,如此则不允许任何从服务器连接
2. 在主服务器中创建一个用户用于从服务器的连接
mysql> CREATE USER ‘repluser’@’%’ IDENTIFIED BY ‘repluser’
//第一个repluser 表示账户名 第二个repluser表示密码,当然这些可以自己定义。%表示接受来自于任何主机的连接
mysql> GRANT REPLICATION SLAVE ON *.* TO ‘repluser’@’%’
3. 获得主服务器的binlog信息
首先刷新所有表和块儿的写入状态
mysql> FLUSH TABLES WITH READ LOCK
然后显示master的binlog状态
mysql>SHOW MASTER STATUS
对于新服务器来说显示结果如下
+------------------+-------------+-----------------+------------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+-------------+-----------------+------------------+------------------+
| mysql-bin.000001 | 13 | | |
+------------------+-------------+-----------------+------------------+------------------+
这里需要记住 file 和position两个字段的值,在配置从服务器的时候需要用到这两个选项
4. 释放read 锁
mysql> UNLOCK TABLES
到此主服务器的配置就算是完成了,真的是挺简单的。下面配置从服务器
从服务器(slave)的配置
在配置完主服务器以后下面我们开始配置从服务器。
1. 首先应该在配置文件my.cnf中为从服务器指定一个server-id并且关闭从服务器的binlog日志
[mysqld]
#log-bin = mysql-bin
server-id = 2
2. 开启从服务器
mysql>START SLAVE
3. 这一步是最主要的,我们需要告诉从服务器必须的连接主服务器的信息,这样才能和主服务器建立通信。
mysql> CHANGE MASTER TO
-> MASTER_HOST = ‘主服务的地址’,
-> MASTER_USER = ‘repluser’, //这是上面新建的用户
-> MASTER_PASSWORD = ‘preluser’,
-> MASTER_LOG_FILE = ‘mysql-bin.000001’, //这是在上述第三步需要记住的file的值
-> MASTER_LOG_POS = 13; //这是在上述第三步需要记住的position的值
4. 然后查看从服务器的状态
mysql> SHOW SLAVE STATUS\G
显示的结果如下
Slave_IO_State: Waiting for master to send event //等待主服务器的操作
Master_Host: 192.168.144.128 //这是我主服务器的地址
Master_User: repuser //用户名
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 13
Relay_Log_File: localhost-relay-bin.000007
Relay_Log_Pos: 23
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
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: 336
Relay_Log_Space: 642
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 //主服务器的id
出现以上信息说明从服务器配置成功。
当然我们一开始就可以按照上述步骤配置多个从服务器,只是server-id不同。
主服务器和从服务器都配置完成以后我们可以做一个测试,在主服务器中的test数据库中创建一个表,并插入一些数据
mysql> use test;
mysql> create table repl(id int(5) not null primary key auto_increment,name varchar(100));
mysql> insert into repl(name)values(‘test1’);
mysql> insert into repl(name)values(‘test2’);
然后在从服务器中查看数据是否同步,没特殊情况的话数据是同步过来的。
在当前的主从复制集合中新加一台从服务器
对于已经存在的从服务器我们称之为 oldslave(其ip地址为192.168.144.131) ,新添加的称之为 newslave (其ip地址为192.168.144.132)。
1. 首先关闭已经存在的从服务器 oldslave
mysql> mysqladmin shutdown
2. 将oldslave的data目录拷贝到 newslave中
mysql]# tar zcvf data.tar.gz data
mysql]# scp data.tar.gz root@192.168.144.132:mysql安装目录
3. 进入newslave服务器中
mysql]# tar –zxvf data.tar.gz //解压传输过来的data包,解压完以后newslave中的data目录就和oldslave中的目录合并,如果oldslave中的data目录中没有master.info和relay-log.info两个文件的话那还需要将这两个文件拷贝过来
4. 修改newslave的server-id 并且关闭binlog 日志
[mysqld]
#log-bin = mysql-bin
server-id = 3
5. 在newslave上开启mysql服务,并且开启slave机制
mysql]# service mysqld start
mysql> START SLAVE;
这样如果没有特殊情况的话就成功的加入了一台从服务器。
以上所有只是一个简单的主从复制集合的配置,想更深入的了解还需参考官方的文档
相关文章
使用 Mysqldump 备份 MySQL 中的数据
发布时间:2023/05/09 浏览次数:192 分类:MySQL
-
本篇文章将介绍如何使用 mysqldump 只备份数据。 在这里,我们将探讨 --no-create-info 、--compact 、--skip-triggers 和 --no-create-db 选项。
更新 MySQL 表中的主键
发布时间:2023/05/09 浏览次数:61 分类:MySQL
-
本篇文章介绍如何更新 MySQL 表中的主键。 我们将使用 ALTER 命令对主键进行任何更改。更新 MySQL 表中的主键 我们可以在多种情况下更新 MySQL 表中的主键。
在 MySQL 中获取命令历史记录
发布时间:2023/05/09 浏览次数:150 分类:MySQL
-
本文重点介绍了在 Windows 和 Linux 中获取我们已执行的 MySQL 命令历史记录的各种方法。MySQL命令历史
Oracle 的 decode 函数在 MySQL 中的等价物
发布时间:2023/05/09 浏览次数:115 分类:MySQL
-
本篇文章介绍了三种替代实现,我们可以将它们用作 MySQL 中 Oracle 的 decode() 函数的等价物。 为此,我们将使用 IF()、CASE 以及 FIELD() 和 ELT() 的组合。
使用 Ubuntu 连接远程 MySQL 服务器的不同方法
发布时间:2023/05/09 浏览次数:97 分类:MySQL
-
在本文中我们将学习如何使用 Ubuntu 连接远程 MySQL 服务器来操作数据以及启动和停止 MySQL 服务器。
在 Linux 中安装 MySQL 客户端
发布时间:2023/05/09 浏览次数:72 分类:MySQL
-
在 Linux 中安装 MySQL 客户端的命令。Linux 和 Unix 等环境作为命令行界面工作,仅在命令的帮助下运行。
在 MySQL 中转换为十进制
发布时间:2023/05/09 浏览次数:150 分类:MySQL
-
有时,我们可能需要将一种数据类型转换为另一种数据类型。 下面是我们如何使用带有 DECIMAL(M,D) 的 CAST() 和 CONVERT() 函数在 MySQL 中转换为十进制。
在 MySQL 中获取当前日期和时间
发布时间:2023/05/09 浏览次数:145 分类:MySQL
-
本篇文章我们将学习 NOW()、CURRENT_TIMESTAMP()(也写为 CURRENT_TIMESTAMP)和 SYSDATE() 来获取 MySQL 中的当前日期和时间。 我们还将看到这三个功能之间的比较。在 MySQL 中获取当前日期和时间
更改 MySQL 服务器中的 max_allowed_packet Size
发布时间:2023/05/09 浏览次数:142 分类:MySQL
-
本篇文章介绍如何更改 MySQL 服务器中的 max_allowed_packet 大小。 为了了解这一点,我们将使用两个操作系统,Windows 10 和 Linux (Ubuntu)。