mysql使用主从复制迁移,MYSQL主从复制配置

[mysqld]

server-id=1

log-bin=mysqlmaster-bin.log

sync_binlog=1

innodb_buffer_pool_size=512M

innodb_flush_log_at_trx_commit=1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

lower_case_table_names=1

log_bin_trust_function_creators=1

修改完之后service mysqld restart

4: 修改从数据库配置文件/etc/my.cnf

[mysqld]

server-id=2

log-bin=mysqlslave-bin.log

sync_binlog=1

innodb_buffer_pool_size=512M

innodb_flush_log_at_trx_commit=1

slave-skip-errors=all (加这句可以跳过复制错误,否则复制错误会导致复制停止)

slave-parallel-type=LOGICAL_CLOCK

slave-parallel-workers=16

master_info_repository=TABLE

relay_log_info_repository=TABLE

relay_log_recovery=ON

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

lower_case_table_names=1

log_bin_trust_function_creators=1

修改完之后service mysqld

restart

5:在主数据库上创建用于主从复制的账户

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.101'

IDENTIFIED BY '111111';

6:主数据库锁表(禁止再插入数据以获取主数据库的的二进制日志坐标)

flush tables with read lock;

7:查看主数据库的状态(并记录下File字段和Position字段的值,在配置从服务器时有用到)

show master status;

查看file position记录下来

8:备份数据库,迁移数据到从数据库

迁移所有数据库,再导入到从服务器数据库

mysqldump --default-character-set utf8 -uroot -p -B database1

databases2 > /home/alldatabase.sql

备份完之后,从另个服务器上复制这个文件

scp -P 10000 root@192.168.149.25:/home/alldatabase.sql

/home/alldatabase.sql

登录另个服务器MYSQL 直接用source /home/alldatabase.sql (无须先用use 数据库名)

9:解锁主数据库的锁表操作

unlock tables;

10:修改主数据库iptables防火墙,支持从数据库3306可以访问主数据库服务器

-A INPUT -s 192.168.115 -p tcp -m tcp --dport 3306 -j ACCEPT

11:在从数据库服务器上设置主数据库服务器向从数据库服务器同步

change master to master_host =

'192.168.1.100',master_user='repl',master_password='111111',master_log_file='mysqlmaster-bin.000004',master_log_pos=327;

11:启动从数据库复制线程

start slave;

第十四步:查询从数据库的复制线程状态

show slave status \G

如果Slave_IO_Running和Slave_SQL_Running两项都为yes,就表示主从复制配置成功了.

下面可以开始测试配置是否成功了,首先在主数据库的test数据库中新建一张表,然后插入几条数据,然后到从数据库看看是否同步过来了。

注意:当从数据库有大量的查询时,可以暂时将从数据库的复制线程关闭掉,等查询量降下来了,再打开,这样也不会丢失数据。

特别提醒,从服务器数据库不能再执行增加删除更改操作了,否则会导致2边数据不一致,如果从数据库增加了一个键值,这个编号,主数据库同步过来出错了,就导致同步失败,复制进程停止,使用show

slave status查看会发现是NO,需要更改后,重新启用start slave;

配置多个从服务器,只要server-id设置不重复即可,流程重新走一遍即可

另外设置为从数据库后,该服务器上所有数据库都没有写入权限了,如果需要恢复为非从数据库,只要更新/etc/my.cnf里的mysqld下面刚刚添加的那些配置代码删除掉,重启数据库即可。

配置好之后,在从服务器上设置个只读账户,让WEB服务器直接从slave服务器上读取

grant select on artbase.* to user1@192.168.1.22 identified by

"webdfasf#####1111111";

(未实验过,等待添加验证可行性)

如果后期需要添加slave,可以先把其中一个slave show slave status \G;

查看  Master_Log_File:

mysqlmaster-bin.000004

Exec_Master_Log_Pos:

528177656

再stop slave

再备份这个slave数据库,然后

change master to master_host

=

'192.168.1.100',master_user='repl',master_password='111111',master_log_file='mysqlmaster-bin.000004',master_log_pos=528177656;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值