轻松实现MySQL从服务器同步,配置简单易懂 (mysql从服务器同步设置)
MySQL是一款功能强大的开源数据库,广泛应用于各种Web应用程序和企业级系统中。在实际应用中,很多情况下都需要将数据从主服务器同步到备份服务器,以实现数据的备份和保护。MySQL从服务器同步是一种非常常见的操作,但是对于很多初学者来说,配置MySQL从服务器同步并不太容易。本文将介绍一种轻松实现MySQL从服务器同步的方法,而且配置简单易懂。
一、准备工作:
1、安装MySQL
在实现MySQL从服务器同步之前,首先需要安装MySQL,并确保主服务器和从服务器都安装了相同版本的MySQL。这里采用的是MySQL5.7版本。
2、创建用户
在主服务器上创建一个专门用于从服务器同步的用户,并赋予该用户REPLICATION SLAVE权限,以便于从服务器连接到主服务器进行数据同步。假设该用户的用户名为slave,密码为123456,其对应的SQL语句如下:
CREATE USER ‘slave’@’%’ IDENTIFIED BY ‘123456’;
GRANT REPLICATION SLAVE ON *.* TO ‘slave’@’%’ IDENTIFIED BY ‘123456’;
3、备份数据库
在主服务器上备份要同步的数据库,以便于从服务器在开始同步之前进行数据恢复。可以使用mysqldump命令进行备份,比如备份名为test的数据库,命令如下:
mysqldump -uroot -p test > test.sql
二、配置主服务器:
1、开启二进制日志
在主服务器上需要开启二进制日志,以记录所有的数据库操作。可以通过修改my.cnf配置文件来启用二进制日志。找到my.cnf中[mysqld]所在的行,在其下面添加如下代码即可:
log-bin=mysql-bin
binlog-format=ROW
其中,log-bin指定二进制日志的名字,binlog-format指定二进制日志的格式为row-based。
2、指定主服务器ID
在主服务器中指定一个唯一的server ID,以便从服务器连接到主服务器时识别主服务器。可以修改my.cnf配置文件,找到[mysqld]所在的行,在其下面添加如下代码:
server-id=1
这里指定主服务器的server ID为1。
3、记录主服务器状态
在主服务器完成备份并启动二进制日志之后,可以记录主服务器的状态信息,以便于从服务器连接到主服务器时找到与其进行同步的位置。在主服务器上执行下面的SQL语句即可记录主服务器当前的状态信息:
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
UNLOCK TABLES;
执行完上述命令后,可以得到类似如下的结果:
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000001 | 120 | | |
+——————+———-+————–+——————+
其中,File和Position是主服务器当前二进制日志文件的名字和偏移量,从服务器需要利用这个信息从准确的位置开始同步。
三、配置从服务器:
1、设置从服务器ID
在从服务器中设置一个唯一的server ID,以便于从服务器连接到主服务器时识别从服务器。可以修改my.cnf配置文件,找到[mysqld]所在的行,在其下面添加如下代码:
server-id=2
这里指定从服务器的server ID为2。
2、恢复备份数据
在从服务器中还原之前备份的数据到指定的数据库中。假设之前备份的是test数据库,可以使用下面的命令还原备份数据:
mysql -uroot -p test
3、连接到主服务器
在从服务器上连接到主服务器,并开始进行数据同步。可以通过修改my.cnf配置文件来设置连接信息,找到[mysqld]所在的行,在其下面添加如下代码:
replicate-do-db=test
replicate-ignore-db=mysql
其中,replicate-do-db表示从服务器需要同步的数据库,这里是test数据库;replicate-ignore-db表示从服务器忽略同步的数据库,这里是mysql数据库。
然后,可以通过下面的命令连接到主服务器:
CHANGE MASTER TO MASTER_HOST=’ip_address_of_master’, MASTER_USER=’slave’,
MASTER_PASSWORD=’123456′, MASTER_LOG_FILE=’mysql-bin.000001′,
MASTER_LOG_POS=120;
其中,MASTER_HOST是主服务器IP地址;MASTER_USER是之前在主服务器上创建的从服务器同步用户的用户名;MASTER_PASSWORD是该用户的密码;MASTER_LOG_FILE和MASTER_LOG_POS是从主服务器FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;命令中得到的二进制日志文件名和偏移量,表示从服务器从这个位置开始进行数据同步。
4、启用同步功能
在从服务器上启用同步功能,执行下面的命令即可:
START SLAVE;
至此,MySQL从服务器同步就已经成功配置和启动了,当主服务器上的数据发生变化时,从服务器也会同步这些变化,保证数据的备份和保护。
相关问题拓展阅读:
- mysql主主同步 怎么再同步到下属从服务器
- MySQL数据库如何实现双机热备的配置成功方案
mysql主主同步 怎么再同步到下属从服务器
mysql主从复制的原理就伍中旁是备库不停的监控主库的binlog日志,主库对数据库的任何修改操作(如建表,插入,更新,删除等等)都会写入binlog日志,这时备库监控到了之后,会取出主库的binlog日腔橡志在自己的数据库中执行一遍,这样就确保了主备数据库培配的一致性。
MySQL数据库如何实现双机热备的配置成功方案
还好MySQL数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中。实现MySQL数据库的热备份。 2、要想实现双机的热备首先要了解主纤散从数据库服务器的版本的需求。要实现热备MySQL的版本都要高于3.2,还有一个基本的原则就是作为从数据库的数据库版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。 3、设置主数据库服务器: a.首先查看主服务器的版本是否是支持热备的版本。然后查看my.cnf(类Unix)或者my.ini(Windows)中MySQLd配置块的配置有没有log-bin(记录数据库更改日志),因为MySQL的复制机制是基于日志的复制机制,所以主服务器一定要支持更改日志才行。然后设置要写入日志的数据库或者不要写入日志的数据库。这样只有您感兴趣的数据库的更改才写入到数据库的日志中。 server-id=1 //数据库的id这个应该默认是1就不用改动 log-bin=log_name //日志文件的名称, //这毁皮氏里可以制定日志到别的目录 如果没有设置则默认主机名的一个日志名称 binlog-do-db=db_name //记录日志的数据库 binlog-ignore-db=db_name //不记录日志的数据库以上的如果有多个数据库用”,”分割开 然后设置同步数据库的用户账号 MySQL> GRANT REPLICATION SLAVE ON *.* -> TO ‘repl’@’%.mydomain.com’ IDENTIFIED BY ‘slavepass’;4.0.2以前的版本, 因为不支持REPLICATION 要使用下面的语句来实现这个功能 MySQL> GRANT FILE ON *.* -> TO ‘repl’@’%.mydomain.com’ IDENTIFIED BY ‘slavepass’;设置好主服务器的配置文件后重新启动数据库 b.锁定现有的数据库并备份现在的数据 锁定数据库 MySQL> FLUSH TABLES WITH READ LOCK;备份数据库有两种办法一种是直接进入到MySQL的data目录然后打包你需要备份数据库的文件夹,第二种是使用MySQLdump的方式来握首备份数据库但是要加上”–master-data ” 这个参数,建议使用之一种方法来备份数据库
1.mysql数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好mysql数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中。实现mysql数据库的热备份。
敬族 2.要想实现双机的热备首先要了解主从数据库服务器的版本的需求。要实现热备mysql的版本都要高于3.2,还有一个基本的原则就是作为从数据库的数据库版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。
3.设置主数据库服务器:
a.首先查看主服务器的版本是否是支持热备的版本。然后查看my.cnf(类unix)或者my.ini(windows)中mysqld配置块的配置有没有log-bin(记录数据库更改日志),因为mysql的复制机制是基于日志世稿孙的复制机制,所以主服务器一定要支持更改日志才行。然后设置要写入日志的数据库或者不要写入日志的数据库。这样只有您感兴趣的数据库的更改才写入到数据库的日志中。
server-id=1 //数据库的id这个应该默认是1就不用改动
log-bin=log_name //日志文件的名称,这里可以制定日志到别的目录 如果没有设置则默认主机名的一个日志名称
binlog-do-db=db_name //记录日志的数据库
binlog-ignore-db=db_name //不记录日志的数据库
以上的如果有多个数据库用”,”分割开
然后设置同步数据库的用户帐号
mysql> GRANT REPLICATION SLAVE ON *.*
-> TO ‘repl’@’%.mydomain.com’ IDENTIFIED BY ‘slavepass’;
4.0.2以前的版本, 因为不支持REPLICATION 要使用下面的语句来实现这个功能
mysql> GRANT FILE ON *.*
-> TO ‘repl’@’%.mydomain.com’ IDENTIFIED BY ‘slavepass’;
设置好主服务器的配置文件后重新启动数据库
b.锁定现有的数据库并备份现在的数据
锁定数据库
mysql> FLUSH TABLES WITH READ LOCK;
备份数据库有两种办法一种是直接进入到mysql的data目录然后打包你需要备份数据库的文件夹,第二种是使用mysqldump的方式来备份数据库但是要加上”–master-data ” 这个参数,建议使用之一种方法来备份数据库
c.查看主服务器的状态
mysql> show master status\G;
+-+++—-+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-+++—-+
| mysql-bin.003 | 73 | test | manual,mysql |
+-+++—-+
记录File 和 Position 项目的值,以后要用的。
d.然后把数据库的锁定打开
mysql> UNLOCK TABLES;
4.设置从服务器
a.首先设置数据库的配置文件
server-id=n //设置数据库id默认主服务器是1可以随便设置但是如果有多台从服务器则不能重复。
master-host=db-master.mycompany.com //主服务器的IP地址或者搜链域名
master-port=3306 //主数据库的端口号
master-user=pertinax //同步数据库的用户
master-password=freitag //同步数据库的密码
master-connect-retry=60 //如果从服务器发现主服务器断掉,重新连接的时间差
report-host=db-slave.mycompany.com //报告错误的服务器
b.把从主数据库服务器备份出来的数据库导入到从服务器中
c.然后启动从数据库服务器,如果启动的时候没有加上”–skip-slave-start”这个参数则进入到mysql中
mysql> slave stop; //停止slave的服务
d.设置主服务器的各种参数
mysql> CHANGE MASTER TO
-> MASTER_HOST=’master_host_name’, //主服务器的IP地址
-> MASTER_USER=’replication_user_name’, //同步数据库的用户
-> MASTER_PASSWORD=’replication_password’, //同步数据库的密码
-> MASTER_LOG_FILE=’recorded_log_file_name’, //主服务器二进制日志的文件名(前面要求记住的参数)
-> MASTER_LOG_POS=recorded_log_position; //日志文件的开始位置(前面要求记住的参数)
e.启动同步数据库的线程
mysql> slave start;
查看数据库的同步情况。
查看主从服务器的状态
mysql> SHOW PROCESSLIST\G //可以查看mysql的进程看看是否有监听的进程
如果日志太大清除日志的步骤如下
1.锁定主数据库
mysql> FLUSH TABLES WITH READ LOCK;
2.停掉从数据库的slave
mysql> slave stop;
3.查看主数据库的日志文件名和日志文件的position
show master status;
+-+++—-+
| File | Position | Binlog_do_db | Binlog_ignore_db |
+-+++—-+
| louis-bin.001 | 79 | | mysql |
+-+++—-+
4.解开主数据库的锁
mysql> unlock tables;
5.更新从数据库中主数据库的信息
mysql> CHANGE MASTER TO
-> MASTER_HOST=’master_host_name’, //主服务器的IP地址
-> MASTER_USER=’replication_user_name’, //同步数据库的用户
-> MASTER_PASSWORD=’replication_password’, //同步数据库的密码
-> MASTER_LOG_FILE=’recorded_log_file_name’, //主服务器二进制日志的文件名(前面要求记住的参数)
-> MASTER_LOG_POS=recorded_log_position; //日志文件的开始位置(前面要求记住的参数)
6.启动从数据库的slave
mysql> slave start;
关于mysql从服务器同步设置的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
编辑:568数据
标签:数据库,服务器,备份,日志,版本