********Mysql主从复制***********
主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是实时的业务数据库,作用和使用场合一般有几个:
一是作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作。
二是可在从数据库作备份、数据统计等工作,这样不影响主数据库的性能。
准备server1,server2
这里server1的数据库复制到server2
server1:
scp -rp mysql/ server2:/usr/local/ 复制次目录以及给予权限
scp mysqld server2:/etc/init.d/
scp /etc/my.cnf server2:/etc/
vim /etc/my.cnf
/etc/init.d/mysqld restart 重启数据库
mysql -p ----登陆数据库查看建立的用户()
CREATE USER 'repl'@'%' IDENTIFIED BY 'westos'; --创建复制用户
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; 授权
mysqldump -pwestos(密码) westos(数据库用户) > dump.sql ---将信息导入dump.sql
scp dump.sql server2: 将dump.sql 复制到server2里
登陆mysql
show master status; 查看Position
server2:
建立用户组,以及用户
groupadd -g 1001 mysql
useradd -u 1001 -g mysql -M -d /data/mysql -s /sbin/nologin mysql
vi .bash_profile 添加mysql路径
source .bash_profile ---重读
mkdir /data/mysql -p
chown mysql.mysql /data/mysql
mysqld --initialize --user=mysql------把复制过来的mysql初始化
mysql_secure_installation ---查看日志里的出使密码对mysql进行密码更改
mysql -h 172.25.14.1 -u repl -p 使用用户repl登陆,看到数据库已经大体复制完成
mysqladmin -pwestos create westos
mysql -pwestos westos < dump.sql 将复制的dump导入到数据库中
vi /etc/my.cnf
/etc/init.d/mysqld restart 重启mysql
--------------------------------------------------------------------
再次登陆数据库
mysql -p
CHANGE MASTER TO MASTER_HOST='172.25.14.1', MASTER_USER='repl',
MASTER_PASSWORD='westos',MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=595; (595在server1里看到)
start slave;
show slave status\G;
需要看到
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
表示搭建成功
---------------------------------------------------------
此时可以在server1数据库里添加数据,就会同步到server2的数据库中
***************Gtid实现主从复制******************
server1:
vim /etc/my.cnf
/etc/init.d/mysqld restart -----重启数据库
在mysql中westos里随便添加一个数据
insert into userlist values ('user4','123');
server2:
vi /etc/my.cnf
/etc/init.d/mysqld restart
------------------------------------------------
登陆mysql
stop slave;
change master to master_host='172.25.14.1',master_user='repl',master_password='westos', MASTER_AUTO_POSITION = 1;
start slave;
show slave status \G; ----查看日志
看到user4 同步到server2里
********************Mysql半同步复制**********************
server1:
开启数据库
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
下载主机的plugin
SELECT PLUGIN_NAME, PLUGIN_STATUS
-> FROM INFORMATION_SCHEMA.PLUGINS
-> WHERE PLUGIN_NAME LIKE '%semi%';
vim /etc/my.cnf
再进入mysql的westos建立新用户数据,在server2查看
server2:
开启数据库
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
SET GLOBAL rpl_semi_sync_slave_enabled = 1;
下载从机的plugin
vim /etc/my.cnf
再次开启数据库查看
***********延迟复制*******************
mysql -p
STOP SLAVE IO_THREAD;
STOP SLAVE SQL_THREAD;
CHANGE MASTER TO MASTER_DELAY = 30;
START SLAVE SQL_THREAD;
*************并行复制****************
vi /etc/my.cnf
mysql -p
show processlist;