mysql 主从配置+读写分离

master:10.13.120.236
slave:10.13.120.233
步骤一:安装master
下载mysql-5.1.60-linux-x86_64-glibc23.tar.gz 放到/home/a/soft/下
shell>sudo groupadd mysql 
shell>sudo useradd -r -g mysql mysql 
shell>cd /home/a/soft/ 
shell>tar zxvf mysql-5.1.60-linux-x86_64-glibc23.tar.gz
shell>cd /usr/local/ 
shell>sudo ln -s /home/a/soft/mysql-5.1.60-linux-x86_64-glibc23 mysql 
shell> cd mysql 
shell>sudo chown -R mysql . 
shell>sudo chgrp -R mysql . 
shell>sudo scripts/mysql_install_db --user=mysql 
shell>sudo chown -R root . 
shell>sudo chown -R mysql data 
# Next command is optional 
shell>sudo cp support-files/my-medium.cnf /etc/my.cnf 
shell>sudo bin/mysqld_safe --user=mysql & 
# Next command is optional 
shell>sudo cp support-files/mysql.server /etc/init.d/mysql.server
#配置my.cnf
####################################
binlog-do-db=phpdb
binlog-ignore-db=mysql
log-bin=/usr/local/mysql/log/updatelog
log-slave-updates
slave-skip-errors=all
#####################################
$sudo service mysql.server start
$mysql -uroot -p
改变当前数据库为mysql:
mysql>use mysql
设置从本地主机登录的root帐号密码:
mysql>set password for root@localhost=password('root');
删除匿名帐号: 
mysql>delete from user where user='';
删除密码为空的帐号:
mysql>delete from user where password='';
删除允许非localhost主机登录的帐号:
mysql>delete from user where host<>'localhost';
执行下面的命令使更改生效:
mysql>flush privileges; 
mysql>update user set host = '%' where user = 'root';
mysql>create database phpdb;
mysql>use phpdb;
mysql>create table person(id int(10) primary key auto_increment,name varchar(100) not null);
#dump主库数据
mysql>flush tables with read lock;
$mysqldump -h127.0.0.1 -p3306 -uroot -p phpdb > /mnt/phpdb.sql 
(/mnt目录是我自己做的NFS,就是方便不同机器间使用文件,不用nfs也可以)
mysql> unlock tables;
mysql>use mysql
mysql>GRANT REPLICATION SLAVE ON *.* TO 'slave1_user'@'10.13.120.233' IDENTIFIED BY 'root';
$sudo service mysql.server restart
mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000006 |     2366 | phpdb        | mysql            |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

步骤二:安装slave
下载mysql-5.1.60-linux-x86_64-glibc23.tar.gz 放到/home/a/soft/下
shell>sudo groupadd mysql 
shell>sudo useradd -r -g mysql mysql 
shell>cd /home/a/soft/ 
shell>tar zxvf mysql-5.1.60-linux-x86_64-glibc23.tar.gz
shell>cd /usr/local/ 
shell>sudo ln -s /home/a/soft/mysql-5.1.60-linux-x86_64-glibc23 mysql 
shell> cd mysql 
shell>sudo chown -R mysql . 
shell>sudo chgrp -R mysql . 
shell>sudo scripts/mysql_install_db --user=mysql 
shell>sudo chown -R root . 
shell>sudo chown -R mysql data 
# Next command is optional 
shell>sudo cp support-files/my-medium.cnf /etc/my.cnf 
shell>sudo bin/mysqld_safe --user=mysql & 
# Next command is optional 
shell>sudo cp support-files/mysql.server /etc/init.d/mysql.server
#配置my.cnf
#####################################################
server-id       = 2
#master-host     =   mysql_master
#master-user     =   slave1_user
#master-password =   root
#master-port     = 3306
#master-connect-retry=60
replicate-ignore-db=mysql
replicate-do-db=phpdb
log-slave-update
slave-skip-errors=all
#####################################################
$sudo service mysql.server start
$mysql -uroot -p
改变当前数据库为mysql:
mysql>use mysql
设置从本地主机登录的root帐号密码:
mysql>set password for root@localhost=password('root');
删除匿名帐号: 
mysql>delete from user where user='';
删除密码为空的帐号:
mysql>delete from user where password='';
删除允许非localhost主机登录的帐号:
mysql>delete from user where host<>'localhost';
执行下面的命令使更改生效:
mysql>flush privileges; 
mysql>update user set host = '%' where user = 'root';
mysql>create database phpdb;
mysql>use phpdb;
$mysqldump -h127.0.0.1 -p3306 -uroot -p phpdb < /mnt/phpdb.sql   
(mysql>source /mnt/phpdb.sql)
mysql>change master to master_host='10.13.120.236', 
mysql>master_user='slave1_user', 
mysql>master_password='root',
mysql>master_port=3306,
mysql>master_connect_retry=60,
mysql>MASTER_LOG_FILE='mysql-bin.000006',
mysql>MASTER_LOG_POS=107;
mysql>slave start;
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.13.120.236
Master_User: slave1_user
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000006
Read_Master_Log_Pos: 2366
Relay_Log_File: canggu-OptiPlex-760-relay-bin.000002
Relay_Log_Pos: 2512
Relay_Master_Log_File: mysql-bin.000006
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: phpdb
Replicate_Ignore_DB: mysql
Replicate_Do_Table: 
Replicate_Ignore_Table: 
Replicate_Wild_Do_Table: 
Replicate_Wild_Ignore_Table: 
Last_Errno: 0
Last_Error: 
Skip_Counter: 0
Exec_Master_Log_Pos: 2366
Relay_Log_Space: 2682
Until_Condition: None
Until_Log_File: 
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File: 
Master_SSL_CA_Path: 
Master_SSL_Cert: 
Master_SSL_Cipher: 
Master_SSL_Key: 
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error: 
Last_SQL_Errno: 0
Last_SQL_Error: 
Replicate_Ignore_Server_Ids: 
Master_Server_Id: 1
1 row in set (0.00 sec)
ERROR: 
No query specified

mysql>slave stop;
mysql>change master to master_host='10.13.120.236', 
master_user='slave1_user', 
master_password='root',
master_port=3306,
master_connect_retry=60,
MASTER_LOG_FILE='mysql-bin.000006',
MASTER_LOG_POS=107;



配置读写分离

下载mysql-proxy-0.8.2-linux-glibc2.3-x86-32bit.tar.gz
解压并cp到/usr/local/mysql-proxy
在/usr/local/mysql-proxy/bin下创建文件mysql-proxy.cnf添加如下内容:
[mysql-proxy]
daemon=true
admin-address=127.0.0.1:4041
proxy-address=:3306
admin-username=admin
admin-password=admin
admin-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/admin-sql.lua
proxy-read-only-backend-addresses=10.13.120.233:3306
proxy-backend-addresses=10.13.120.236:3306
proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
log-file=/usr/local/mysql-proxy/logs/log-debug.log
log-level=debug



启动代理:
/usr/local/mysql-proxy/bin/mysql-proxy  --daemon --defaults-file=mysql-proxy.cnf

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值