对任何一个数据库的操做都自动应用到另一个数据库,始终保持两个数据库中的数据一致。mysql
这样作有以下几点好处:sql
- 能够作灾备,其中一个坏了能够切换到另外一个。
- 能够作负载均衡,能够将请求分摊到其中任何一台上,提升网站吞吐量。 对于异地热备,尤为适合灾备。
1 Master 数据库操做的任何数据库的时候,都会将操做记录写入到biglog日志文件当中 2 Slave 数据库经过网络获取到主数据库的日志文件,写入本地日志系统 ,而后一条条的将数据库事件在数据库中完成 3 Slave 重作中继日志中的事件,将 Master 上的改变反映到它本身的数据库中,因此两端的数据是彻底同样的。
操做系统:CentOS数据库
MySQL版本:mysql-5.6.26 (主从二者数据库版本必须保持一致)vim
1 开启binlog日志功能服务器
vim /etc/my.cnf网络
server-id=6 log-bin=mysql-bin
2 重启mysql 登录并受权负载均衡
mysql -uroot -p123456socket
grant replication slave, replication client on *.* to 'repl'@'10.211.55.7' identified by '123456';
ip地址为slave服务器的ip地址ide
3 查看日志状态测试
show master status;
1 开启binlog日志功能
vim /etc/my.cnf
server-id=8 log-bin=mysql-bin
2 重启mysql 登录并受权
mysql -uroot -p123456
grant replication slave, replication client on *.* to 'repl'@'10.211.55.7' identified by '123456';
ip地址为slave服务器的ip地址
3 查看日志状态
show master status;
1 修改配置文件 (注意 slave的默认数据库启动的端口必须关闭 service mysql stop)
vim /etc/my.cnf
[mysqld] binlog-ignore-db=mysql binlog_format=mixed expire_logs_days=7 slave_skip_errors=1062 relay_log=mysql-relay-bin log_slave_updates=1 [mysqld_muliti] mysqld=/usr/bin/mysqld_safe mysqladmin=/usr/bin/mysqladmin user=root password=123456 [mysqld6] port=3306 datadir=/home/mysql/data6 pid-file=/home/mysql/data6/mysql.pid socket=/home/mysql/data6/mysql.sock user=mysql server-id=7 [mysqld8] port=3307 datadir=/home/mysql/data8 pid-file=/home/mysql/data8/mysql.pid socket=/home/mysql/data8/mysql.sock user=mysql server-id=7
2 初始化生成目录
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data6 & /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data8 &
3 修改目录权限
chown -R mysql /home/mysql/data6
chown -R mysql /home/mysql/data8
4 启动服务
mysqld_multi --defaults-file=/etc/my.cnf start 6
mysqld_multi --defaults-file=/etc/my.cnf start 8
5 登陆测试(并分别作受权)
mysql -P 3306 -S /home/mysql/data6/mysql.sock
mysql> change master to master_host='10.211.55.6', master_user='repl', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=120; mysql> start slave;
mysql -P 3307 -S /home/mysql/data8/mysql.sock
mysql> change master to master_host='10.211.55.8', master_user='repl', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=120; mysql> start slave;
ok 就这样 完成了