linux mysql 数据库复制

一、主服务器配置

1、配置文件my.cnf的修改

[[email protected] mysql]# vim /etc/my.cnf

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

2、创建从服务器的用户和权限

#进入mysql数据库
[[email protected] mysql]# mysql -uroot -p
Enter password:

#创建从数据库的masterbackup用户和权限
mysql> grant replication slave on *.* to [email protected]‘192.168.17.%‘ identified by ‘123456‘;
#备注
#192.168.17.%通配符,表示0-255的IP都可访问主服务器,正式环境请配置指定从服务器IP
#若将 192.168.17.% 改为 %,则任何ip均可作为其从数据库来访问主服务器

#退出mysql
mysql> exit;

3、重启mysql服务

[[email protected] mysql]# service mysqld restart

4、查看主服务器状态

#进入mysql数据库
[[email protected] mysql]# mysql -uroot -p
Enter password:

#查看主服务器状态
mysql> show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 | 154 | test | | |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

ps:如果执行show master status,输出结果为空(mysql没有开启日志)

在mysql 配置文件 /etc/my.cnf中

[mysqld]下添加:

log-bin=mysql-bin

二、slave从服务器的配置

1 、配置文件my.cnf的修改

[[email protected] mysql]# vim /etc/my.cnf

#在[mysqld]中添加:
server-id=2
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index
#replicate-do-db=test
#备注:
#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为互斥选项,一般只需要一个即可。

2、 重启mysql服务

[[email protected] mysql]# service mysql restart

3、 连接master主服务器

#进入mysql数据库
[[email protected] mysql]# mysql -uroot -p
Enter password:

#连接master主服务器
mysql> change master to master_host=‘192.168.17.130‘,master_port=3306,master_user=‘masterbackup‘,master_password=‘123456‘,master_log_file=‘master-bin.000001‘,master_log_pos=154;
#备注:
#master_host对应主服务器的IP地址。
#master_port对应主服务器的端口。
#master_log_file对应show master status显示的File列:master-bin.000001。
#master_log_pos对应show master status显示的Position列:154。

4、启动slave数据同步

#启动slave数据同步
mysql> start slave;

#停止slave数据同步(若有需要)
mysql> stop slave;

5、查看slave信息

mysql> show slave status\G;

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

三、解决错误

1、在从数据库中,使用SET全局sql_slave_skip_counter来跳过事件,跳过这一个错误,然后执行从下一个事件组开始。

#在从数据库上操作
mysql > stop slave;
mysql > set global sql_slave_skip_counter=1;
mysql > start slave;

原文地址:https://www.cnblogs.com/lingyao/p/11994082.html

时间: 2024-07-30 21:19:08

linux mysql 数据库复制的相关文章

Linux MYSQL 数据库

Linux MYSQL  数据库 1.1.概述: DBMS datebase management system  数据库管理系统 DML:date manapulate lanaguage  数据操作语言 INSERT,REPLACE,UPDATE,DELETE DLL: Date Defination Lanauage 数据定义语言 CREATE,创建数据库 ALTER,修改数据库 DROP 删除数据库和表 DCL:Date Control Language 数据控制语言 常用数据库软件 O

Linux mysql数据库搭建

设共享软件包地址192.168.80.10 setenforce  0 service  iptables  stop 1.共享软件包 mount.cifs   //192.168.80.10/r   /media/                 匿名访问共享文件夹 cd   /media/ ls     查看是否挂载成功了 tar   xzvf   mysql-5.5.24.tar.gz   -C   /opt/        解压至/opt/ cd   /opt/ mysql-5.5.24

mysql数据库‘复制’的办法

mysql数据库‘复制’的办法 2006-01-17 10:36:00 标签:Mysql SQL 数据库 休闲 职场 >mysqldump wap -u root -ppassword --add-drop-table | mysql test -u root -ppassword 这样就用本地的wap数据库,复制到了test数据库.当然,这里的例子数据库都数本地的.通过给定选项h,也可以指定一个远程的mysql. 这个例子,在做开发的时候很有用:用一个生产数据库的内容来填充开发数据库的内容.

mysql数据库复制—双主

一.实现环境 centos master1:172.16.20.245 master2:172.16.20.219 两数据库均是新安装 二.master1安装配置 1配置文件 #vim /etc/my.cnf server-id = 10 log-bin = mysql-bin log-bin-index = mysql-bin.index binlog-format = mixed relay-log = relay-mysql relay-log-index = relay-mysql.in

linux MySQL 如何复制表数据或表结构到新表中

经常操作xshell 发现,复制同样的功能,需要复制数据表的结构和数据,linux MySQL 如何复制表数据或表结构到新表中? 1.MySQL复制表结构及数据到新表的方法 CREATE TABLE new_table SELECT * FROM old_table; 2,只复制表结构到新表 CREATE TABLE new_table like old_table; 注意:还一种方法,但是不复制列属性和索引 CREATE TABLE new_table SELECT * FROM old_ta

MySQL数据库复制过滤

在复制的时候只复制数据库中的部分表,可以减少主从服务器的压力 在主服务器上 binlog-bin-db仅将指定数据库相关的修改操作计入二进制日志(一般来讲)[白名单] binlog-ignore-db[黑名单] 一旦主数据库发生故障,则无法立即还原引起较大的损失,因此主端的二进制日志是完整的 从服务器上 replicate-do-db[白名单]只应用哪个数据库到本地 replicate-ignore-db[黑名单] replicate-do-table使用指定表 replicate-ignore

linux mysql 数据库开启外部访问设置指南

Linux下设置MySQL和允许外部机器访问,具体目录是具体情况而定,有的人是安装了在个人目录下,则找到对应的目录则可以 Linux下设置MySQL和允许外部机器访问sudo vi /etc/my.cnf 具体目录是具体情况而定,有的人是安装了在个人目录下,则找到对应的目录则可以. 一.配置文件的修改 1.#sudo vim /etc/mysql/my.conf 找到 bind-address = 127.0.0.1 注释掉这句话 二.Mysql数据库的修改 1) [[email protect

linux⑧ mysql数据库,redis 数据库

目录 一. mysql 数据库 二.redis 数据库 三.redis 发布/订阅 四. redis 数据持久化 五. redis 主从同步 六.redis-cluster  集群搭建 一. mysql 数据库 1.安装方式 ①yum安装 ②源代码编译安装 ③rpm包安装 yum安装的前提条件,是准备好yum源,可以选择163源,清华源,阿里云源,等等等 1.安装mariadb的yum源有俩,一个是阿里云的yum源,可能版本较低,并且软件包很小,功能很少 yum install mariadb-

MySQL数据库复制概念及数据库架构不断扩展方案

MySQL Replication 系统扩展的方式: scale up:向上扩展,垂直扩展    使用更高性能的硬件来扩展 scale out:向外扩展,水平扩展    提供更多的节点来提供更多的访问需求 复制:水平扩展的一种方案 如果构建一个httpd负载均衡集群会面临的问题: 当用户请求到达时,负载均衡器给调度到后端的各realserver上,如果web服务器允许用户上传数据,用户上传数据到第一个节点上,而后他又访问被调度到第三个节点上来,则数据就访问不到,如果要解决此问题,需要如何操作?使