mysql主从复制架构配置

第一个mysql
1、下载mysql,解压,移动解压后的目录到指定目录下。
如:mv /usr/local/src/mysql-5.1.. /usr/local/mysql
创建mysql用户, useradd -s /sbin/nologin mysql
创建数据存放目录/data/mysql
并指定拥有者所属组:chown -R mysql /data/mysql
2、拷备配置文件,启动脚本到指定目录下
cp my.cnf到/etc/my.cnf
cp my.server到/etc/init.d/mysqld
3、编辑启动脚本:
vim /etc/init.d/mysqld
指定datadir和basedir
如:
basedir=/usr/local/mysql
datadir=/data/mysql
进入安装目录,初始化
./script/mysql_install_db --user=mysql --datadir=/data/mysql
4、启动mysql服务:/etc/init.d/mysqld start
第二个mysql
1、拷备mysql安装目录 :
cp -r /usr/local/mysql /usr/local/mysql2
2、 拷备配置文件,启动脚本到指定目录下
cp /etc/my.cnf到/usr/local/mysql2/my.cnf
cp /etc/init.d/mysqld /etc/init.d/mysqld2
修改my.cnf文件中如下内容:
[mysqld]
port = 3307
socket = /tmp/mysql2.sock
datadir = /data/mysql2
并且创建数据存放目录。/data/mysql2
修改mysqld2 启动脚本。
指定datadir和basedir
如:
basedir=/usr/local/mysql2 #安装目录
datadir=/data/mysql2 #数据存放目录
同时:conf=$basedir/my.cnf #指定配置文件。

1、在主mysql创建测试数据库
mysql -uroot -p52033dd -S /tmp/mysql.sock
create database db1;
2、复制数据到数据库db1;
先备份数据 mysqldump -uroot -p52033dd
-S /tmp/mysql.sock mysql>1.sql
复制(恢复)数据 mysql -uroot -p52033dd
-S /tmp/mysql.sock db1 <1.sql

use db1; show tables;
可查看数据库db1中有没有表数据

3、修改主mysql的my.cnf配置文件
修改如下内容:
log-bin=mysql-bin[可自定义]
server-id = 1
有时需要指定更新(do)或不更新(ignore)的数据库:
如 binlog-do-db=databasename1,databasename2;
binlog-ignore-db=databasename1,databasename2;
重新启动mysql服务:
/etc/init.d/mysqld restart

4、在主mysql中创建一个用户
作为从mysql访问主mysql端数据的用户:
grant replication slave on *.* to 'repl'@'127.0.0.1' identified by '123456';
5、使更改立即生效:flush privileges;
6、锁定数据库,不允许更改任何数据。
flush tables with read lock;
7、查看状态:show master status;
记住如下内容:
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000011 | 331 | | |
+------------------+----------+--------------+------------------+

1、修改从mysql中的mysql.cnf配置文件
修改如下,改变其server-id号使和主mysql不同。
server-id = 2
保存后重启mysql服务
/etc/init.d/mysql2 restart
2、创建数据库使之和主mysql相同。
mysql -S /tmp/mysql2.sock -e "create database db1"

3、复制数据:
mysql -S /tmp/mysql2.sock db1 < 1.sql

4、进入数据库
mysql -S /tmp/mysql2.sock
停止 :slave stop; mysql5.6为stop slave;
配置主从:
change master to master_host='127.0.0.1',master_port=3306,master_user='repl',
master_password='123456',master_log_file='mysql-bin.000011',
master_log_pos=331;
#其中 host指定ip ,post 指定主mysql端口,
user指定访问用户名,password密码,
log_file是之前主mysql上查看状态得到的file名,
log_pos也是之前主mysql查看状态Position得到的。
5、启动:slave start;
6、查看slave的状态;
show slave statusG;
如果以下两项参数为YES,则成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

主mysql解锁:unlock tables;

测试:
1、在主mysql操作,删除表
drop table help_topic;

在从上查看表列表:是否存在help_topic表
use db1; show tables;

2、在主mysql操作,创建表
create table dd(`id` int(8), `name` char(40));

在从上查看表列表:是否存在dd表

3、在主mysql操作,删除库
drop database db1;

在从上查看库列表:是否存在db库
show databases;

主从mysql监控核心:
两个参数 Slave_IO_Running: Yes
Slave_SQL_Running: Yes
error 错误日志Last_SQL_Error:

***特别提示:在不同服务器上安装端口不需要改动,只改变其server-id号使和主mysql不同

原文地址:https://www.cnblogs.com/ddgen/p/7119591.html