MySQLmysql数据库迁移主从复制(分享十三)

       本章节聊聊MySQL主从复制部署,为什么聊这个话题,也是坐自己当之全江苏省的云上迁移项目的原因,一开始我以为咱们电信天翼云针对的政府企业是数据量小,停机时间长之一个迁项目,经过13独地采购调查询问及不少政府企业之web服务等下已达标了TB级别之量级,这个实在还未是重要,很多云主机申请之拉动富只有发1M-5M等不同,按照自原本计划之冷备份导出或者备份与回复措施还尚未辙满足这些甲方需求,于是我虽想到了中心模式,这样停机时间少,切换时不久,数据库这种主从方案还充分成熟。这也是自己面前写了诸多迁方式,大部分针对的凡数据量不生,停机时间累加之模式。今天自虽对mysql主从模式聊聊部署方式:

主从复制目的:可以举行数据库的实时备份,保证数据的完整性;可做读写分离,主服务器就管写,从服务器就管读,这样好升官整体性能。

1.装配备mysql 5.5(rpm、源码)

软件下充斥:

http://dev.mysql.com/downloads/mysql/\#downloads

检查库文件是否在,如有剔。
[root@localhost Desktop]$ rpm -qa | grep mysql
mysql-libs-5.1.52-1.el6_0.1.x86_64

[root@localhost ~]# rpm -e mysql-libs-5.1.52.x86_64 –nodeps

命如下:
#rpm -ivh MySQL-server-5.5.30-1.el6.x86_64.rpm
#rpm -ivh MySQL-client-5.5.30-1.el6.x86_64.rpm
#rpm -ivh MySQL-devel-5.5.30-1.el6.x86_64.rpm

/usr/bin/mysql_install_db –user=mysql 初始表

#service mysql start

转移配置文件:

主 [root@server ~]# egrep “log-bin|server-id” /etc/my.cnf
server-id = 111
log-bin-index=mysql-bin.index

 

从 [root@server ~]# egrep “log-bin|server-id” /etc/my.cnf
log-bin=mysql-bin
server-id=222

#show variables like 'log_bin

+-----------------------+--------+
| Variable_name | Value |
+-----------------------+--------+
| log_bin       | ON  |    # ON 为开始开启成功
+-----------------------+--------+

3.白手起家用于从库复制的账号rep

mysql> grant replication slave on *.* to 'rep'@'192.168.0.%' identified by 'C#ssw0rd';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

# 检查创建的rep账号:
mysql> select user,host from mysql.user;
4、备份主库,及回复到从库

拿主库现有数据备份下来,再恢复到从仓库,此时片只主机的数一致。

假定先来数量以来,这不不能忘。

在主库上加锁,使只有只读权限。
mysql> flush table with read lock;

 记住就是这个点备份的。

show master status;
+——————+———-+————–+——————+——————-+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
Executed_Gtid_Set |
+——————+———-+————–+——————+——————-+
| mysql-bin.000006 |      750 | wuzy         |    

主  mysqldump -uroot -p -hlocalhost –all-databases> mysql1.bak.sql
导出
或者只要数据量比较异常,直接拷贝原始数据文件比采用mysqldump更加有效,也省了行insert语句更新索引的开发。

 

解锁库:

mysql> unlock tables;

从   mysql -uroot -p </tmp/mysql1.bak.sql   导入

 
5、配置从库及生效
 更改从属服务器用于与主服务器进行连接和通讯的参数。
mysql> CHANGE MASTER TO
      MASTER_HOST='192.168.0.203',
      MASTER_PORT=3306,
      MASTER_USER='rep',
      MASTER_PASSWORD='C#ssw0rd',
      MASTER_LOG_FILE='mysql-bin.000006',
      MASTER_LOG_POS=750;

mysql> start slave;
Query OK, 0 rows affected (0.01 sec)

mysql> show slave status\G
*************************** 1. row
***************************
               Slave_IO_State: Connecting to master
                  Master_Host: 192.168.0.203
                  Master_User: rep
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000005
          Read_Master_Log_Pos: 948
               Relay_Log_File: server-relay-bin.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File: mysql-bin.000005
             Slave_IO_Running: Connecting
            Slave_SQL_Running: Yes

6.读写分离

 

忽视MySQL主从复制授权发明同步,读写分离

[root@bogon 3306]# vim my.cnf
#添加以下四行
replicate-ignore-db = mysql
binlog-ignore-db = mysql
binlog-ignore-db = performance_schema
binlog-ignore-db = information_schema


1)    通过read-only参数防止数据写入从库的方法。
#修改配置文件。
vim my.cnf
[mysqld]
read-only
#对用户授权事不能指定有super或all privileges权限。不然没效果。
#创建账户wuzy,并刷新权限。
mysql> grant select,insert,update,delete on *.* to 'wuzy'@'localhost' identified by 'P!ssw0rd';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

2)    从库开启bin-log
vim my.cnf
log-bin = mysql-bin
log-slave-updates           #表示从库记录bin-log
expire_logs_days = 7        #保留7天bin-log。
网站地图xml地图