如何添加新数据库到mysql主从复制列表

如何添加新数据库到mysql主从复制列表,第1张

首先,我们大概罗列一下主从复制的基本步骤,(MySQL主从首先需要在各自服务器配置好)。

1. 复制数据库

mysqldump --master-data --single-transaction -R --databases [db_name] | gzip -9 - | pv >all-db-with-master-data.sql.gz

注意:innodb用 –single-transaction, myisam需要用 –lock-all-tables。

2. 复制,导入数据。

pv <all-db-with-master-data.sql.gz | zcat | mysql

3. 启动slave数据库。

slave start

注意:切换到主的语句已经在导出的sql语句里面了,注意查看。change master to master_log_file=’(binlog name in relay_master_log_file)’, master_log_pos=(exec_master_log_pos number)。

那么,在现有的主从复制结构中,如何增加一个新的数据库进去?比如我们要增加一个数据库在master服务器上,比如,名为newdb的数据库。

具体 *** 作如下:

1. 从服务上,停掉slave数据库。

stop slave

2. 主服务器上,导出新数据库。

mysqldump --master-data --single-transaction -R --databases newdb >newdb.sql

3. 主服务器上,修改my.cnf文件,添加新库到binlog-do-db参数,重启mysql。

4. 在导出的newdb.sql里面查找当前的日志文件以及位置(change master to …)

然后让slave服务器执行到这个位置。

start slave until MASTER_LOG_FILE="mysql-bin.000001", MASTER_LOG_POS=1222220

其中MASTER_LOG_FILE以及MASTER_LOG_POS在导出的数据库newdb.sql顶部位置查找。

4. 导入新库到从服务器上。

mysql <newdb.sql

5. start slave

其中比较重要的是在主服务器上导出新库时的日志位置(position A),这个点很重要,以这个点做为分界线,导入新库。

这种方法也同样适用于某个数据库或者某个数据表不同步的情况,比如主从数据库有一个表由于某些原因数据不一致,那么上面的方法只需要去掉重启数据库一步,其他的 *** 作基本

在配置Mysql数据库主从复制集群的时候要保证:

1.主从服务器 *** 作系统版本和位数一致。

2.Mysql版本一致。

为了保证稳定性,最好服务器 *** 作系统和Mysql数据库环境一致。

CentOS服务器上Mysql的安装方法可以参见博客:

http://blog.csdn.net/jhq0113/article/details/43812895

服务器配置:

Master:192.168.1.18

Slave:192.168.1.16

Master(192.168.1.18)服务器:

1.编辑/etc/my.cnf

[root@jhq0229 ~]# vim /etc/my.cnf

2.配置

[plain] view plain copy print?

[mysqld]

datadir=/data/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

#主从复制配置

innodb_flush_log_at_trx_commit=1

sync_binlog=1

#需要备份的数据库

binlog-do-db=orders

#不需要备份的数据库

binlog-ignore-db=mysql

#启动二进制文件

log-bin=mysql-bin

#服务器ID

server-id=1

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

若没有配置binlog-do-db和binlog_ignore_db,表示备份全部数据库。

3.重启Mysqld服务

[root@jhq0229 ~]# service mysqld restart

4.为从Mysql创建用户

登录

[root@jhq0229 ~]# mysql -uroot -p

Enter password:

创建用户

mysql>create user 'mastj'@'192.168.1.16' identified by '123456'

配置主从复制权限

mysql>grant replication slave on *.* to 'mastj'@'192.168.1.16' identified by '123456'

若orders数据库中已经有数据,还需要:

锁定数据库

mysql>flush tables with read lock

将数据导入到从数据库,方法有多种,我是用Navicat复制的,复制完成后:

查看master状态并解锁:

[html] view plain copy print?

mysql>show master status

+------------------+----------+--------------+------------------+-------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000003 | 2005 | orders | mysql| |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

mysql>unlock tables

Slave(192.168.1.16)服务器:

1.配置服务ID

[root@jhq0113 ~]# vim /etc/my.cnf

在[mysqld]下面加入

server-id=2

重启Mysql服务

[root@jhq0113 ~]# service mysqld restart

2.配置复制

登录mysql

[root@jhq0113 ~]# mysql -uroot -p

执行

mysql>change master to master_host='192.168.1.18',

master_user='mastj',

master_password='123456',

master_port=3306,

master_log_file='mysql-bin.000003',

master_log_pos=2005,

master_connect_retry=10

参数详解:

master_host:主服务器的IP。

master_user:配置主服务器时建立的用户名

master_password:用户密码

master_port:主服务器mysql端口,如果未曾修改,默认即可。

master_log_file:日志文件名称,填写查看master状态时显示的File

master_log_pos:日志位置,填写查看master状态时显示的Position

master_connect_retry:重连次数

启动进程

mysql>start slave

检查主从复制状态

[plain] view plain copy print?

mysql>show slave status\G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.1.18

Master_User: mastj

Master_Port: 3306

Connect_Retry: 10

Master_Log_File: mysql-bin.000003

Read_Master_Log_Pos: 2369

Relay_Log_File: jhq0113-relay-bin.000002

Relay_Log_Pos: 647

Relay_Master_Log_File: mysql-bin.000003

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

若Slave_IO_Running和Slave_SQL_Running均为Yes,则表示连接正常。

此时就可以测试主从复制了。

1.按照正确方式安装mysql,详细按照步骤可参照mysql官方文档。

2.在控制面板里停止已安装的mysql(mysql56)服务。

3.将C:\Program Files\MySQL目录下的所有目录和文件copy到另外一个路径,以示区分。

例如:C:\Program Files\MySQL_slave

4.编辑第二个mysql的my.ini文件


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5899136.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-07
下一篇 2023-03-07

发表评论

登录后才能评论

评论列表(0条)

保存