概念
MySQL之间数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以“事件”的方式记录在二进制日志中,其他数据库作为slave通过一个I/O线程与主服务器保持通信,并监控master的二进制日志文件的变化,如果发现master二进制日志文件发生变化,则会把变化复制到自己的中继日志中,然后slave的一个SQL线程会把相关的“事件”执行到自己的数据库中,以此实现从数据库和主数据库的一致性,也就实现了主从复制。
安装mysql(一主一从)
192.168.138.187 主机
192.168.138.188 丛机
步骤一:检查虚拟机中是否有mysql环境,并将其卸载,命令如下
rpm -qa | grep -i mysql
如果有使用【rpm -e --nodeps MySQL-client-5.5.44-1.linux2.6.x86_64】命令将其删除;
使用【find / -name mysql】命令查看是否有相关的mysql文件夹
有的话,使用【rm -rf 文件名】删除相关文件或文件夹
步骤二:在【/usr/local】目录下使用命令【mkdir mysql】新建一个文件夹名为mysql,将tar文件放在该mysql文件夹下
步骤三:使用【tar -xvf MySQL-5.5.44-1.linux2.6.x86_64.rpm-bundle.tar】命令解压文件
步骤四:安装mysql客户端,命令如下:
rpm -ivh MySQL-client-5.5.44-1.linux2.6.x86_64.rpm --nodeps
注意:安装客户端和服务端的时候,如果版本冲突,使用【yum remove mysql-libs】命令;
步骤五:安装服务端,命令如下:
rpm -ivh MySQL-server-5.5.44-1.linux2.6.x86_64.rpm --nodeps
步骤六:检测是否安装了客户端和服务端
步骤七:启动mysql服务
service mysql start
步骤八:修改密码
如果使用【mysqladmin -uroot -p password 'root'】命令修改报如下错误
解决方案:
8.1 使用命令【service mysql stop】
8.2 使用命令【mysqld_safe --skip-grant-tables &】
8.3 输入【mysql -uroot -p】命令回车
8.4 输入【use mysq;】命令
8.5 输入【update user set password=PASSWORD("root")where user="root";】命令,修改密码为root
8.6 输入【flush privileges; 】更新权限
8.7 输入【quit】退出
8.8 输入【service mysql restart】命令启动
8.9 输入【mysql -uroot -p】回车
8.10 输入修改的密码
步骤九:SQLyog连接虚拟机mysql
连接报1130错误,就代表没有权限进行远程连接,需要更改权限
9.1 登录mysql服务器,使用【use mysql;】命令切换到mysql数据库下
9.2 查询当前用户表的用户名和host信息,命令如下:
select user,host from user;
host文件为127.0.0.1代表只能本机使用,外界用不了,所以我们需要修改host属性为%;
9.3 更改权限,命令如下:
update user set host='%' where user='root';
如果报23000的错误,请忽略;
9.4 使用【select user,host from user;】命令查看host权限是否修改成功
9.5 刷新权限
flush privileges;
9.6 退出客户端,重启mysql,然后去连接SQLyog
搭建主从复制环境
配置主节点
找到my.cnf配置文件,rpm方式安装在/etc下没有该文件,mysql默认启动的时候会加载/usr/share/mysql/my-medium.cnf,只需要将这个文件复制到/etc下改名为my.cnf即可
步骤一:复制文件到【/etc】目录下
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
步骤二:修改my.cnf文件
vim /etc/my.cnf
步骤三:更改内容如下:
server-id =187 #保证唯一,建议配置成ip地址第四位
log-bin=mysql-bin #为了让主机生成二进制SQL日志执行文件
步骤四:重启mysql服务器
service mysql restart
步骤五:在数据库中查看当前server-id是否生效
步骤六:查看当前主服务器状态,如果值为不是null代表成功
配置从节点
步骤一:复制文件到【/etc】目录下
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
步骤二:编辑my.cnf文件
vim /etc/my.cnf
步骤三:更改内容如下:
server-id = 188
log-bin=mysql-bin
binlog_do_db=test
步骤四:重启mysql服务器
service mysql restart
步骤五:查看当前service-id是否生效
SHOW VARIABLES LIKE 'server_id'
设置服务器读取权限
主服务器创建一个账号,将账号分配给从服务器,从服务器拿到该账号然后才可以进行同步操作
GRANT REPLICATION SLAVE ON *.* TO 'wn'@'%' IDENTIFIED BY 'wn';
从服务器执行同步操作
设置同步,根据主服务器的ip地址,生成的权限账号的用户名和密码以及二进制文件的名称还有文件大小进行同步
CHANGE MASTER TO MASTER_HOST='192.168.138.187',MASTER_USER='wn',MASTER_PASSWORD='wn',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=235;
开启同步
START SLAVE
测试
在主服务中创建表,测试从服务器会不会同步
查看从服务器
这样就实现了主从复制