Mysql作为目前世界上使用最广泛的免费数据库,在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面;
一、MySQL的安装与配置
具体的安装过程,参考 http://blog.csdn.net/liulihui1988/article/details/78050671
二、MySQL主从复制
场景描述:
主数据库服务器:centos-node6,从数据库服务器:centos-node7,均已安装MySQL,并且无应用数据。
2.1 Master主数据库上进行配置,修改配置文件/etc/my.cnf,添加如下配置
vim /etc/my.cnf
- 1
设置:log-bin=mysql-bin #用yum安装的mysql数据库/etc/my.cnf文件只是满足基本要求,mysql主从时,查看master日志时没有数据显示,因此在/etc/my.cnf文件中添加一行 log-bin=mysql-bin
设置:server-id = 1 #此值不能和从数据库的一样,
设置:binlog-ignore-db=mysql #表示哪些库不同步,每个不同步的库写一行
配置完成重新启动Master数据库;
# systemctl restart mysql
- 1
进入Master数据库安装目录 /usr/local/mysql/bin/
# cd usr/local/mysql/bin/
- 1
执行以下命令登陆本地数据库:
# mysql -uroot -p123456
- 1
执行以下命令查看Master的状态:
mysql> show master status;
- 1
记录File的mysql-bin.000003 与 Position的154,等会要用到。
分配一个数据库账号给Slave从数据库 Server,是从服务器能够访问Master数据库;
mysql> grant replication slave on *.* to 'slave'@'centos-node7' identified by '123456'
- 1
查询mysql 数据库中的user表,查看已分配的用户权限;select * from user;
2.2 从服务器Slave server数据库配置, 修改配置文件/etc/my.cnf,添加如下配置
vim /etc/my.cnf
- 1
设置:server-id=2 此值不能和主数据库的一样,唯一
设置:replicate-do-db = test #可以指定要复制的库
设置:replicate-ignore-db = mysql #忽略的库
配置完成重新启动Slave数据库;
# systemctl restart mysql
- 1
进入Master数据库安装目录 /usr/local/mysql/bin/
# cd usr/local/mysql/bin/
- 1
执行以下命令登陆本地数据库:
# mysql -uroot -p123456
- 1
- 执行同步SQL语句
mysql> CHANGE MASTER TO
-> Master_Host=centos-node6,
-> Master_User=slave,
-> Master_Password=123456,
-> Master_Port=3306,
-> Master_Log_File=mysql-bin.0000003,
-> Master_Log_File=154;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
启动Slave同步进程:
mysql> start slave;
- 1
主从同步检查:
mysql> show slave status\G
- 1
如果Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,表明成功了;
三、验证主从复制效果
在Master服务器test数据库上创建一个表t_class;是否在Slave从服务器test数据库中自动创建t_class;
3.1 Master主服务器test数据库中执行以下命令;
mysql> create table t_class(id int ,name varchar(16))
- 1
3.2 查询Slave服务器中的test数据库中是否有t_class表;
结果肯定是有的咯,本文来自网络帖子 :http://blog.csdn.net/ljuncong/article/details/38925569
:http://heylinux.com/archives/1004.html
仅供个人学习笔记为主;