mysql 1对多复制_巧用mysqld_multi实现多主对一从的mysql复制

一、在两个主服务器上分别安装mysql。

useradd mysql

wget    http://122.225.32.131/icons/mysql-5.0.22.tar.gz

tar -zxvf mysql-5.0.22.tar.gz

cd      mysql-5.0.22

mkdir   /usr/local/mysql

./configure     \

--prefix=/usr/local/mysql       \

--without-debug \

--enable-thread-safe-client \

--enable-assembler \

--enable-profiling \

--with-mysqld-ldflags=-all-static \

--with-client-ldflags=-all-static \

--with-charset=latin1 \

--with-extra-charsets=all  \

--with-big-tables       \

--enable-largefile      \

make && make install

cp support-files/my-medium.cnf /etc/my.cnf

cd /usr/local/mysql/bin

./mysql_install_db --user=mysql

./mysqld_safe   --user=mysql    &

cp /root/mysql-5.0.22/support-files/mysql.server  /etc/rc.d/init.d/mysqld

chkconfig --add mysqld

chkconfig --level 345 mysqld on

sleep 3

mysql -uroot mysql -e "delete from user where user = '';"

mysql -uroot mysql -e "grant replication slave on *.* to 'repl'@'%'  identified by '123321';"

mysql -uroot mysql -e "grant shutdown on *.* to 'shutdown'@'%' identified by 'shutdown';"

//可以根据你的实际情况把%改为从服务器的IP,修改用户名和密码。

以上服务器是基本配置,如果要优化的情更具实际情况优化。

2、检查服务器配置文件,确认打开bing-log,并且配置serverid = 1

mysql

flush tables with read lock;

show master status;

+------------------+----------+--------------+------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000014 |   386037 |              |                  |

+------------------+----------+--------------+------------------+

记录以上数值,然后通过dump,或者tar -zcvf 备份 数据库或者var目录。

unlock tables;

exit

scp 备份的var目录到从服务器上。

两个主服务器都这样操作。

3、搭建从服务器。

useradd mysql

wget    http://122.225.32.131/icons/mysql-5.0.22.tar.gz

tar -zxvf mysql-5.0.22.tar.gz

cd      mysql-5.0.22

mkdir   /usr/local/mysql

./configure     \

--prefix=/usr/local/mysql       \

--without-debug \

--enable-thread-safe-client \

--enable-assembler \

--enable-profiling \

--with-mysqld-ldflags=-all-static \

--with-client-ldflags=-all-static \

--with-charset=latin1 \

--with-extra-charsets=all  \

--with-big-tables       \

--enable-largefile      \

make && make install

cp support-files/my-medium.cnf /etc/my.cnf

修改/etc/my.cnf

在结果加上以下代码

[mysqld_multi]

mysqld = /usr/local/mysql/bin/mysqld_safe

mysqladmin = /usr/local/mysql/bin/mysqladmin

user = shutdown

password =  shutdown

log = /usr/local/mysql/etc/mysqld_multi.log

[mysqld1]

socket          = /tmp/mysql.sock1

port            = 3306

pid-file        = /usr/local/mysql/var1/localhost.pid

datadir         = /usr/local/mysql/var1

user            = mysql

server-id       = 2

[mysqld2]

socket          = /tmp/mysql.sock2

port            = 3307

pid-file        = /usr/local/mysql/var2/localhost.pid

datadir         = /usr/local/mysql/var2

user            = mysql

server-id       = 2

然后

mkdir /usr/local/mysql/etc

cp support-files/mysqld_multi.server  /usr/sbin/mysqld_multi.server

chmod 755 /usr/sbin/mysqld_multi.server

export PATH=$PATH:/usr/sbin/:/usr/local/mysql/bin

如果想下次启动还生效,请修改/etc/profile

把刚才备份过来的var分别放到/usr/local/mysql/下面命令为var1和var2

var1和var2和/usr/local/mysql/etc的权限必须是mysql可以写。

然后启动mysql_multi.server

mysqld_multi.server start

通过netstat -tulnp 检查端口是否启动。

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      23623/mysqld

tcp        0      0 0.0.0.0:3307                0.0.0.0:*                   LISTEN      23733/mysqld

通过

mysql -S /tmp/mysql.sock1   //登录第一个mysql实例

mysql -S /tmp/mysql.sock2    //登录第二个mysql实例

mysqld_multi.servr stop 1 //关闭第一个mysql实例

mysqld_multi.servr stop 1-2 //关闭第一和第二个mysql实例

mysqld_multi.servr stop   //关闭所有mysql实例。start同样。

下面就是分别登录到实例1和实例2后配置mysql复制的从服务器就可以了。

mysql -S /tmp/mysql.sock1

change master to

master_host='第一个主服务器ip',

master_user=‘repl’,

master_password='123321',

master_log_file='mysql-bin.000014‘, \\刚才show master的数据

master_log_pos=386037;

start slave;

show slave status \G;

Slave_IO_Running: Yes \\负责从主服务器读取binlog,如果为NO,应该是账号或者密码不对,不能连接到主服务器,或者是刚才的binlog号码或者pos号码有问题。请仔细检查

Slave_SQL_Running: Yes \\负责执行IO传输过来的binlog。

检查以上两项是否为yes,如果是就OK了。

另一个实例如法炮制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值