mysql主从配置

mysql主从配置 

  1. 主从介绍 

  • MySQL复制允许将主实例(master)上的数据同步到一个或多个从实例(slave)上,默认情况下复制是异步进行的,从库也不需要一直连接主库来同步数据。 

  • MySQL复制的数据粒度可以是主实例上所有的数据库,也可以是指定的一个或多个数据库,也可以是一个数据库里的指定的表 

  • MySQL复制带来的优势在于 

  • 扩展能力: 

   通过复制可以将MySQL的性分到一个或多个slave上。这要求所有的写操作和修改操作都必须在Master上完成,而读操作可以被分配到一个或多个salve上。将读写分离到不同服务执行之后,MySQL的读写性能得到提升。 

  • 数据库备份: 

    由于从实例时同步主实例的数据,所以可以将备份作业部署到从库。 

  • 数据分析和报表: 

        同样,一些数据分析和报表的实现可以在从实例执行,以减少对主库的性能影响。 

  • 容灾能力: 

        可以在物理距离较远的另一个数据建立slave,保证在主实例所在地区遭遇灾难时,在另一个数据中心能快速恢复。 

 

  1. 说明 

两台mysql服务器,一台作为主服务器,一台作为从服务器,主服务器进行写操作、从服务器进行读操作 

主服务器数据库:192.168.64.135 

从服务器数据库:192.168.3.134 

2、软件安装 

  • 使用ubuntu apt安装mysql,默认安装APT软件包存储库中的mysql 

$ sudo apt install -y mysql-server mysql-client libmysqlclient-dev 

  • 如果想安装最新版mysql,需要按照如下操作: 

安装mysql 8.0 

3、配置主服务器数据库 

  • $ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 

找到如下内容并对应修改 

 

#服务器唯一标识 

server-id               = 1 

#启动MySQL二进制日志 

log_bin                 = /var/log/mysql/mysql-bin.log 

#指定需要同步的数据库,自定义,如需指定多个,再添加一行 

binlog_do_db            = ops 

binlog_do_db            = el_hub 

#指定不需要同步的数据库 

binlog_ignore_db        = mysql 

bind-address            = 0.0.0.0 

 

  • 重启mysql服务 

$ sudo systemctl restart mysql 

  • 使用apt安装mysql无法设置密码,需要查看初始密码执行以下语句: 

sudo cat /etc/mysql/debian.cnf 

 

  • 创建ops和hub的数据库(两台服务器上都要操作) 

sudo mysql -uroot -p 

 

填入初始密码:41McNSXsfgLBVwfj 

create database ops charset utf8; 

create database el_hub charset utf8; 

 

  • 登录主服务器数据库创建从服务器用到的账户和权限 

$ sudo mysql -uroot -p 

填入初始密码:41McNSXsfgLBVwfj 

 

mysql> create user 'hongpu'@'%' identified by 'hongpu8192'; 

Query OK, 0 rows affected (0.03 sec) 

 

mysql> grant all on *.* to 'hongpu'@'%'; 

 

mysql> flush privileges; 

Query OK, 0 rows affected (0.00 sec) 

 

mysql>show master status; 

 

4、配置从服务器数据库 

  • $ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 

找到如下内容并修改: 

server-id              = 2 #必须与主服务器数据库不一样 

log_bin                = /var/log/mysql/mysql-bin.log 

binlog_do_db           = marhal 

binlog_ignore_db       = mysql 

 

  • 重启mysql服务 

$sudo systemctl restart mysql 

  • 使用apt安装mysql无法设置密码,需要查看初始密码执行以下语句: 

sudo cat /etc/mysql/debian.cnf 

  

  • 登录从服务器数据库配置 

$ mysql -u root -p 

初始密码:7cogZ3zHNZkHB3wT 

 

mysql> change master to \ 

    master_host='192.168.64.135', \ 

    master_port=3306, \ 

    master_user='hongpu', \ 

    master_password='hongpu8192', \ 

    master_log_file='mysql-bin.000003',  \ 

master_log_pos=154; 

 

 

master_log_file='mysql-bin.000001',   //上面截图的File字段值 

master_log_pos=1095;                  //上面截图的Position字段值 

 

>start slave; 

#查看slave信息 

>show slave status\G; 

 

至此,已配置成功 

 

5、常见情况处理 

问题:记录删除失败 

解决方法:master要删除一条记录,而slave上因找不到要删除的记录而报错,这种情况说明从机都已经删除过了,那么从机可以直接跳过 

stop slave; 

set global sql_slave_skip_counter=1; 

start slave; 

 

 

posted @ 2022-02-25 16:40  Mr沈  阅读(1107)  评论(0编辑  收藏  举报