mysql读写分离[转]
注意:linux自带的mysql不支持集群,需要去下载专门的版本
一、主机环境
主机:
master操作系统:centos 5.5
IP:192.168.4.66
MySQL版本:mysql-5.1.41-linux-i686-glibc23.tar.gz
从机:
slave操作系统:centos 5.5
IP:192.168.4.67
MySQL版本:mysql-5.1.41-linux-i686-glibc23.tar.gz
二、创建数据库
创建mysql用户
useradd -M mysql -s /sbin/nologin
先设置权限再初始化:
chown -R root:mysql .
chown -R mysql data
./scripts/mysql_install_db --user=mysql
cp support-files/my-medium.cnf /etc/my.cnf
ln -s mysql-5.1.41-linux-i686-glibc23 mysql
vi /etc/profile
追加
PATH=/usr/local/mysql/bin:$PATH
export PATH
. /etc/profile
启动mysql服务:
mysqld_safe --user=mysql &
设置root密码:
mysqladmin -u root password 123456
分别登录master机和slave机的mysql:mysql –u root –p
创建数据库:create database repl;
三、master机和slave机的相关配置
1、修改master机器中mysql配置文件my.cnf,该文件在/etc目录下
在[mysqld]配置段添加如下字段
server-id=1
log-bin=msql-bin //启动二进制日志系统
binlog-do-db=repl //需要同步的数据库,如果没有本行,即表示同步所有的数据库
binlog-ignore-db=mysql //被忽略的数据库,避免同步mysql用户配置,以免不必要的麻烦
在master机上为slave机添加一同步帐号
grant replication slave on *.* toidentified by '123456';
flush privileges;
重启master机的mysql服务:service mysqld restart
用show master status 命令看日志情况
mysql>show master status;
+-----------------+------------+-------------------+-----------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-----------------+------------+-------------------+-----------------------+
| mysql-bin.000002 | 106 | repl | mysql |
+-----------------+------------+-------------------+-----------------------+
1 row in set (0.00 sec)
2、修改slave机中mysql配置文件
同样在[mysqld]字段下添加如下内容
注释掉server-id = 1
server-id=2
master-host=192.168.1.222
master-user=repl
master-password=123456
master-port=3306
master-connect-retry=60
replicate-do-db=repl //同步的数据库,不写本行 表示 同步所有数据库
replicate-ignore-db=mysql //忽略的数据库
然后重启slave机的mysql
在slave机中进入mysql
mysql>start slave;
mysql>show slave status\G;
如果Slave_IO_Running、Slave_SQL_Running状态为Yes则表明设置成功。
######################################################################
Slave_IO_Running:yes、Slave_SQL_Running:no
解决办法:
stop slave;
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=106;
就是主库的show master status;状态记录。
######################################################################
3.测试同步
在主库创建
use repl;
create table newtest(id int,name char(10));
查看从库发现已经有了表newtest。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步