Mysql主从配置

Mysql主从配置
mysql主从配置很多人叫做AB复制,从另一个主把日志复制到从上,从根据这个日志去执行相应的操作,从而达到两个数据库的数据保持一致。
实验Mysql主从配置,一台机器的上的主从

安装Mysql
进入到src目录下面
[root@wqslinux ~]# cd /usr/local/src/
解压Mysql
[root@wqslinux src]# tar zxvfmysql-5.1.73-linux-i686-glibc23.tar.gz
移动位置到local目录下面
[root@wqslinux src]# mvmysql-5.1.73-linux-i686-glibc23 /usr/local/mysql
创建一个mysql用户不让它登陆
[root@wqslinux src]# useradd -s/sbin/nologin mysql
进入到mysql下
[root@wqslinux src]# cd /usr/local/mysql/
拷贝一下配置文件和启动脚本
[root@wqslinux mysql]# cpsupport-files/my-small.cnf /etc/my.cnf //拷贝的配置文件
[root@wqslinux mysql]# cpsupport-files/mysql.server /etc/init.d/mysqld //拷贝的启动脚本
vim到启动脚本里面定义basedir和datadir
[root@wqslinux mysql]# vim/etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/data/mysql
初始化mysql
[root@wqslinux mysql]#./scripts/mysql_install_db –user=mysql –datadir=/data/mysql
启动mysql
[root@wqslinux mysql]# /etc/init.d/mysqldstart
安装第二台mysql
拷贝mysql并取名叫mysql_slave
[root@wqslinuxlocal]# cp -r mysql mysql_slave
进入到mysql_slave里面
[root@wqslinuxlocal]# cd mysql_slave/
定义配置文件
[root@wqslinuxmysql_slave]# cp /etc/my.cnf . //拷贝配置文件放到当前目录下
编辑配置文件,主要编辑mysqld模块
[root@wqslinuxmysql_slave]# vim my.cnf
[mysqld]
port = 3307 //修改端口
socket = /tmp/mysql_slave.sock //设置sock
datadir =/data/mysql_slave //路径
初始化mysql
[root@wqslinuxmysql_slave]# ./scripts/mysql_install_db –user=mysql–datadir=/data/mysql_slave
设置启动脚本
[root@wqslinuxmysql_slave]# cd /etc/init.d/ //进去到init.d里面
[root@wqslinuxinit.d]# cp mysqld mysqldslave //拷贝一个启动脚本,名字改一下
修改启动文件
[root@wqslinuxinit.d]# vim mysqldslave
basedir=/usr/local/mysql_slave //定义这两个地方
datadir=/data/mysql_slave
conf=$basedir/my.cnf //修改conf
启动mysql_slave数据库
[root@wqslinuxinit.d]# /etc/init.d/mysqldslave start
检查端口
[root@wqslinuxinit.d]# netstat -lnp |grep mysql
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 13074/mysqld
tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 13368/mysqld
两台mysql准备好,我们来设置主从
首先是主的设置
登陆mysql主数据库
[root@wqslinuxinit.d]# /usr/local/mysql/bin/mysql
mysql>create database db; //创建一个叫做db的库
mysql>quit //先退出mysql在db里面弄一些数据进来
[root@wqslinux~]# mysqldump -S /tmp/mysql.sock mysql > 123.sql //模拟的拷贝一些数据
[root@wqslinux~]# mysql -S /tmp/mysql.sock db < 123.sql //恢复数据到mysql主的db库上面 登陆到主数据库里面 [root@wqslinux~]# /usr/local/mysql/bin/mysql mysql>use db; //进入到db里面
Databasechanged
mysql>show tables; //查看看db里面的表
mysql>quit //退出mysql主
编辑主的配置文件
[root@wqslinux~]# vim /etc/my.cnf
server-id = 1 //打开server-id数值可以随便改,但是到保证与从上面不一样
log-bin=aming //打开log-bin 这个地方我们可以自定义名字,原先是mysql-bin我改成了aming
binlog-do-db=db //有的时候我们有需求只做某个库的主从,就指定个库db
binlog-ignore-db=db1 //有的时候我们需要主从的库太多,我们可以取个反义不去主从库
定义完之后重启主数据库
[root@wqslinux~]# /etc/init.d/mysqld restart
Shuttingdown MySQL…. SUCCESS!
StartingMySQL. SUCCESS!
重启完之后你会查看到/data/mysql下面有几个以aming为前缀的文件,那个就是它的binlog
[root@wqslinux~]# ls /data/mysql
aming.000001 aming.index db ibdata1 ib_logfile0 ib_logfile1 mysql test wqslinux.err wqslinux.pid
做授权相关的,因为是主从,所以要做一个用户,专门传输binlog的用户
登陆主数据库
[root@wqslinux~]# /usr/local/mysql/bin/mysql
mysql>grant replication slave on *.* to ‘repl’@’127.0.0.1’ identified by ‘123123’; // replication只给它复制的权限,用户名是repl因为是本机所以用循环地址127.0.0.1 ,密码设置为123123
mysql>flush tables with read lock; //把表的读锁死
mysql>show master status; //显示主的状态,看下file和Position的内容
+————–+———-+————–+——————+
|File | Position | Binlog_Do_DB |Binlog_Ignore_DB |
+————–+———-+————–+——————+
|aming.000001 | 256 | db | |
+————–+———-+————–+——————+
1row in set (0.00 sec)
从的配置信息
进入到从的my.cnf配置文件
[root@wqslinux~]# vim /usr/local/mysql_slave/my.cnf
server-id = 111 //改下server-id改成跟主的不一样
可选参数:replicate-do-db=db1,db2 和 replicate-ignore-db=db1,db2 #意义同主的那两个可选参数
拷贝一下mysql的数据取名叫做db
重启mysql从使其配置生效
[root@wqslinux ~]# /etc/init.d/mysqldslave restart
[root@wqslinux~]# mysql -S /tmp/mysql_slave.sock -e “create database db” //创建db的库
[root@wqslinux~]# mysql -S /tmp/mysql_slave.sock db<123.sql //把之前模拟的主上的123.sql恢复到从上面去,想要实现mysql主从,首先要保证,主和从上面的库是一样的 实现主从同步的操作 登陆到从数据里面 [root@localhost~]# /usr/local/mysql/bin/mysql -S /tmp/mysql_slave.sock mysql>slave stop; //先停掉slave
做一下change master的修改,master_host指定它主的IP地址,master_port指定主的端口,
master_user和master_password指定binlog的用户和密码,就是我们之前在主上做的授权用户,master_log_file和master_log_pos指定的就是我们之前在主上面show master status; //显示主的状态,file和Position的内容
mysql>change master to master_host=’127.0.0.1′, master_port=3306, master_user=’repl’,master_password=’123123′, master_log_file=’aming.000001′, master_log_pos=256;
mysql> slave start; //启动slave
mysql>show slave status\G; //检查主从是否成功就看下面的两个是否Yes
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
测试主从是否成功
登陆主数据库
[root@localhost~]# /usr/local/mysql/bin/mysql -S /tmp/mysql.sock
mysql>unlock tables; //因为之前我们把表锁死了,现在解锁
mysql>use db; //进入db库
mysql>show tables; //看一下表
mysql>drop table help_category; //删除help_category表
登陆到从上面看看是否还有help_category这表
[root@localhost~]# /usr/local/mysql/bin/mysql -S /tmp/mysql_slave.sock
mysql>use db;
mysql>show tables;
注意从上面千万不要去写数据否则容易发生混乱

发表评论