ubuntu环境下配置mysql主从复制

我是在VMWare虚拟机的Ubuntu 16.04上进行的测试,步骤如下

1、依次下载安装MySQL,我使用的是 sudo apt-get install mysql-server mysql-client在线安装 

2、在主从的终端分别输入 

vim /etc/mysql/mysql.conf.d/mysqld.cnf

打开配置文件,注释掉bind-address,用来允许远程访问数据库。

并在主服务器的里添加以下代码。

server-id = 1 #server-id 服务器唯一标识

log_bin = master-bin #log_bin 启动MySQL二进制日志

log_bin_index = master-bin.index

binlog_do_db = myslave #binlog_do_db 指定记录二进制日志的数据库

binlog_ignore_db = mysql #binlog_ignore_db 指定不记录二进制日志的数据库

 


在从服务器的数据库配置文件里加入以下代码




3、允许mysql的远程访问(权限可以根据自己配置)

例如:

允许账户为root,密码为wangcbin的用户,从192.168.110.*的IP范围 远程访问A主mysql,如果想任何机器都能连上主机把IP改成%即可

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.110.*' IDENTIFIED BY 'wangcbin' WITH GRANT OPTION;
生效。该操作很重要!
mysql>FLUSH PRIVILEGES;

4、分别重启mysql服务 

service mysql restart

5、登录主服务器上的mysql并查看状态信息

show master status


记录下file和position字段的值后面会用到

6、登录从服务器上的mysql并输入一下代码,用于从服务器连接上master服务器

change master to master_host='192.168.178.128',master_port=3306,master_user='root',master_password='wangcbin',master_log_file='master-bin.000001',master_log_pos=1048;

(master_host对应主服务器的IP地址,master_port对应主服务器的端口,master_user对应主服务器的账号,master_password对应主服务器的密码master_log_file对应show master status显示的File列:master-bin.000001,master_log_pos对应Position列:1048,否则有可能出现同步失败。)

master_user和master_password是第三步配置的账号和密码

7、在从服务器上面启动同步 start  slave 查看从服务器状态  show slave status\G;



上面两个都为Yes表示同步成功,如果是slave_io_running no了,那么就我个人看有三种情况,一个是网络有问题,连接不上,第二个是有可能my.cnf有问题,查看server-id是否已经更改,最后一个是mysql的uuid是否和主服务器的不一样,具体问题通过查看mysql的log日志。

mysql的目录结构:

/usr/bin                 客户端程序和脚本
/usr/sbin                mysqld 服务器
/var/lib/mysql           日志文件,数据库  [重点要知道这个]
/usr/share/doc/packages  文档
/usr/include/mysql       包含( 头) 文件
/usr/lib/mysql           库
/usr/share/mysql         错误消息和字符集文件
/usr/share/sql-bench     基准程序

我遇见的问题,通过查看日志文件:

Slave I/O for channel '': Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work. Error_code: 1593

发现原来是uuid和主服务器的uuid重复了,Mysql的一个配置文件auto.cnf里面记录了mysql服务器的uuid。(auto.cnf的地址在库下面/var/lib/mysql 

因为我的从服务器是通过主服务器克隆过来的,所以mysql的uuid重复导致的问题。


server_uuid:服务器身份ID。在第一次启动Mysql时,会自动生成一个server_uuid并写入到数据目录下auto.cnf文件里,然后经过修改auto.cnf文件中的server-uuid,重启mysql服务器,再查看mysql从节点的状态,终于成功了。

需要注意的是权限问题,默认情况下/var/lib/mysql是没有权限访问和修改的,需要sudo chmod 777 /usr/lib/mysql 修改权限后可以访问



 
 
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Ubuntu 22.04是一种Linux操作系统,而MySQL主从复制MySQL数据库的一种高可用性和数据备份方案。在Ubuntu 22.04上配置MySQL主从复制可以实现数据的自动同步和故障切换。 以下是在Ubuntu 22.04上配置MySQL主从复制的步骤: 1. 安装MySQL:在Ubuntu 22.04上安装MySQL数据库,可以使用以下命令: ``` sudo apt update sudo apt install mysql-server ``` 2. 配置主服务器(Master):编辑MySQL配置文件`/etc/mysql/mysql.conf.d/mysqld.cnf`,找到并修改以下参数: ``` bind-address = 0.0.0.0 log_bin = /var/log/mysql/mysql-bin.log server-id = 1 ``` 3. 重启MySQL服务:执行以下命令重启MySQL服务以使配置生效: ``` sudo systemctl restart mysql ``` 4. 创建复制账户:登录MySQL服务器,创建用于复制的账户,并授予复制权限: ``` mysql -u root -p CREATE USER 'replication'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%'; FLUSH PRIVILEGES; ``` 5. 备份主服务器数据:使用`mysqldump`命令备份主服务器的数据,并将备份文件传输到从服务器(Slave): ``` mysqldump -u root -p --all-databases --master-data > backup.sql scp backup.sql user@slave_ip:/path/to/backup.sql ``` 6. 配置从服务器:在从服务器上,编辑MySQL配置文件`/etc/mysql/mysql.conf.d/mysqld.cnf`,找到并修改以下参数: ``` bind-address = 0.0.0.0 server-id = 2 ``` 7. 导入备份数据:在从服务器上导入主服务器的备份数据: ``` mysql -u root -p < backup.sql ``` 8. 启动从服务器复制:登录从服务器的MySQL,执行以下命令启动复制过程: ``` mysql -u root -p CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='replication', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=XXX; START SLAVE; ``` 完成以上步骤后,MySQL主从复制配置完成了。主服务器上的数据更改将自动同步到从服务器上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值