1.1
关闭防火墙
Service iptables status //
查看防火墙状态
Service iptables stop //
防火墙启动状态,则运行此命令停止防火墙服务
1.2
禁掉
selinux
/usr/sbin/sestatus -v //
查看
selinux
状态
SELinux status: disabled//
关闭
SELinux status: enabled//
启动
vim /etc/selinux/config
需要重启机器
#SELINUX=enforcing
#SELINUXTYPE=targeted
SELINUX=disabled
setenforce 0
临时关闭,不需要重启机器
主从复制的原理:
分为同步复制和异步复制,实际复制架构中大部分为异步复制。 复制的基本过程如下:
1).Slave上面的IO进程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;
2).Master接收到来自Slave的IO进程的请求后,通过负责复制的IO进程根据请求信息读取制定日志指定位置之后的日志信息,返回给Slave 的IO进程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息已经到Master端的bin-log文件的名称以及bin-log的位置;
3).Slave的IO进程接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的 bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉Master“我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我”;
4).Slave的Sql进程检测到relay-log中新增加了内容后,会马上解析relay-log的内容成为在Master端真实执行时候的那些可执行的内容,并在自身执行。
1.主服务器配置
vim /etc/my.cnf
#--同步配置begin
#若涉及及同步函数或者存储过程需要配置,否则主备会产生异常不能同步
log_bin_trust_function_creators=TRUE
#需要备份的数据库名,多个库以逗号分
binlog_do_db =ashop,bookmanager,zook
#不需要备份的数据库名 多个库以逗号分
binlog-ignore-db=mysql,sys,performance_schema,information_schema
#表示是本机的序号为1,一般来讲就是master的意思
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
log-bin=/u01/mysql/mysql-bin
sync_binlog=1
log-slave-updates=1
server-id=1
innodb_flush_log_at_trx_commit=1
#0:如果innodb_flush_log_at_trx_commit的值为0,log buffer每秒就会被刷写日志文件到磁盘,提交事务的时候不做任何操作(执行是由mysql的master thread线程来执行的。
#主线程中每秒会将重做日志缓冲写入磁盘的重做日志文件(REDO LOG)中。不论事务是否已经提交)默认的日志文件是ib_logfile0,ib_logfile1
#1:当设为默认值1的时候,每次提交事务的时候,都会将log buffer刷写到日志。
#2:如果设为2,每次提交事务都会写日志,但并不会执行刷的操作。每秒定时会刷到日志文件。要注意的是,并不能保证100%每秒一定都会刷到磁盘,这
#要取决于进程的调度。
#每次事务提交的时候将数据写入事务日志,而这里的写入仅是调用了文件系统的写入操作,而文件系统是有 缓存的,所以这个写入并不能保证数据已经
#写入到物理磁盘
#默认值1是为了保证完整的ACID。当然,你可以将这个配置项设为1以外的值来换取更高的性能,但是在系统崩溃的时候,你将会丢失1秒的数据。
#设为0的话,mysqld进程崩溃的时候,就会丢失最后1秒的事务。设为2,只有在操作系统崩溃或者断电的时候才会丢失最后1秒的数据。InnoDB在做恢复的
#时候会忽略这个值。
#总结
#设为1当然是最安全的,但性能页是最差的(相对其他两个参数而言,但不是不能接受)。如果对数据一致性和完整性要求不高,完全可以设为2,如果>只最求性能,例如高并发写的日志服务器,设为0来获得更高性能
#--同步配置end
2.重启mysql
mysql> grant replication slave on *.* to slaveusr@
192.168
.
19.142
identified by
'
slaveusr
'
;
mysql> show master status;
+------------------+----------+------------------------+-------------------------------------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+------------------------+-------------------------------------------------+-------------------+
| mysql-bin.000004 | 154 | ashop,bookmanager,zook | mysql,sys,performance_schema,information_schema | |
+------------------+----------+------------------------+-------------------------------------------------+-------------------+
-
锁定主数据库 DDL 操作
mysql> flush tables with read lock;
Master上备份一份完整的数据:
mysqldump -uroot -proot123 -h39.108.0.229 --master-data=2 --single-transaction -R --triggers -A > /u01/soft/all.sql;
#解释
--master-data=2代表备份时刻记录master的Binlog位置和Position
--single-transaction意思是获取一致性快照
-R意思是备份存储过程和函数
--triggres的意思是备份触发器
-R意思是备份存储过程和函数
--triggres的意思是备份触发器
-A代表备份所有的库
8、在node01(ccy002)Master上创建复制用户repl(密码111111),并授权访问所有主机:
2.副服务器配置
vim /etc/my.cnf
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLE
server-id =3
replicate-do-db = sbfxd
master-info-file = master.info
relay-log = relay-relay-bin
relay-log-index = relay-relay-bin.index
relay-log-info-file=relay-relay-log.info
3。重启mysql
mysql>
stop slave;
mysql> change master to master_host='192.168.19.139',master_port= 3306,master_log_file='
mysqlbin.000004
'
,master_log_pos=
154
,master_bind='',master_user='
slaveusr
',master_password='
slaveusr
';
mysql>
change master to master_user='root',master_password='root123',master_host='39.108.0.229',master_port=3306,master_log_file='mysql-bin.000002',master_log_pos=154;
mysql> start slave;
(4)显示副服务器的状态
mysql> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 39.108.0.229
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000007
Read_Master_Log_Pos: 2230
Relay_Log_File: VM_10_35_centos-relay-bin.000002
Relay_Log_Pos: 2396
Relay_Master_Log_File: mysql-bin.000007
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 2230
Relay_Log_Space: 2613
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: 4c24c6df-85a2-11e7-a2dd-00163e06a33c
Master_Info_File: /u01/mysql/data/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
(5)登陆slave
导入all.sql
mysql -uroot -p111111 -hccy002 < /u01/soft/all.sql
mysql -uroot -p111111 -hccy003 < /u01/soft/all.sql
2.6
解锁主库
ddl
操作
mysql> unlock tables;
访问:
http://39.108.0.229/ 则会在bookmanager插入一条记录
ccy001
mysql> use bookmanager;
mysql> select count(1) from t_log;
+----------+
| count(1) |
+----------+
| 7211 |
+----------+
ccy003
mysql> use bookmanager;
mysql> select count(1) from t_log;
+----------+
| count(1) |
+----------+
| 7211 |
+----------+
日志表数量相同则表示同步成功