您好,欢迎访问一九零五行业门户网

mysql主从复制全面解析及应用演练

mysql复制mysql内建的复制功能是构建大型、高性能应用程序的基
主服务器:
[root@node1~]# ssh-keygen -t rsa -p ''[root@node1~]##ssh-copy-id -i .ssh/id_rsa.pub root@172.16.18.9从服务器:
[root@node2~]# ssh-keygen -t rsa -p ''[root@node2~]##ssh-copy-id -i .ssh/id_rsa.pub root@172.16.18.72、编辑主从服务器的hosts文件:
[root@node1~]# vim /etc/hosts#####添加如下两项:###############172.16.18.7node1.magedu.com node1172.16.18.9node2.magedu.com node2#####保存并复制至node2上:########[root@node1~]# scp /etc/hosts 172.16.18.9:/etc这里不在详细介绍了,请参考
(1)、创建用户#groupadd -g 306 mysql#useradd -g mysql -u 306 -r mysql(2)、创建数据目录:#mkdir/mydata/data –pv(3)、更改数据目录权限:#chown -r mysql.mysql /mydata/data(4)、解压mysql创建链接#tar xfmysql-5.5.33-linux2.6-x86_64.tar.gz -c /usr/local#ln -svmysql-5.5.33-linux2.6-x86_64 mysql(5)、更改属主属组#cd mysql#chown -r root:mysql./*(6)、初始化mysql#scripts/mysql_install_db--user=mysql --datadir=/mydata/data(7)、创建启动脚本并赋予权限#cpsupport-files/mysql.server /etc/rc.d/init.d/mysqld#chmod +x/etc/rc.d/init.d/mysqld(8)、创建并修改配置文件# cp support-files/my-large.cnf /etc/my.cnf # vim /etc/my.cnf添加如下行指定mysql数据文件的存放位置:datadir = /mydata/data(9)、更改环境变量#vim/etc/profile.d/mysql.sh添加:exportpath=/usr/local/mysql/bin:$path#./etc/profile.d/mysql.sh(10)、添加到服务列表中并启动mysql# chkconfig --addmysqld# service mysql start5、配置主服务器:
(1)编辑配置文件:
[root@node1 ~]# vim /etc/my.cnfserver-id= 1#60行标识自己的id号log-bin=mysql-bin#52行二进制日志,默认是启动的binlog_format=mixed#55行使用混合模式(2)建立复制账号权限:
[root@node1 ~]# mysqlmysql>grant replicationclient,replication slave on *.* to rpuser@'172.16.%.%' identified by 'rpuser';mysql> flushprivileges;#刷新权限6、配置从服务器:
(1)编辑配置文件:
[root@node2 ~]# vim /etc/my.cnfserver-id= 20#60行标识自己的id号,和主服务器决不能相同#log-bin=mysql-bin#52行关闭二进制日志#binlog_format=mixed#55行关闭使用混合模式#####设置从服务器为只读模式######read-only=1#注意从服务器不可有写模式#####添加中继日志################relay-log=/mydata/data/relay-mysql#中继日志relay-log-index=relay-mysql.index#中继日志索引文件【relay-log日志记录的是在复制过程中,从服务器i/o线程将主服务器的二进制日志读取过来记录到从服务器本地文件,然后sql线程会读取relay-log日志的内容并应用到从服务器。】
(2)、登录mysql查看线程:
查看启动线程
mysql> showprocesslist;+----+------+-----------+------+---------+------+-------+------------------+| id | user |host| db | command | time | state | info|+----+------+-----------+------+---------+------+-------+------------------+| 1 | root | localhost | null | query | 0| null | show processlist |+----+------+-----------+------+---------+------+-------+------------------+根据结果显示:此时还未启动任何线程。
(3)、配置连接服务器:
命令参数解析:
mysql>helpchange master tomaster_bind = 'interface_name'#将控制绑定在那个接口上 | master_host = 'host_name'#主服务器地址 | master_user = 'user_name'#主服务器用户(刚才创建的) | master_password = 'password'#主服务器密码 | master_port = port_num#工作端口 | master_connect_retry = interval#重试时间 | master_heartbeat_period = interval #每隔多长时间探测一下是否落后主服务器,主服务器是否在线 | master_log_file = 'master_log_name' #指定从哪一个二进制文件复制 | master_log_pos = master_log_pos#指定哪一个二进制文件的事件位置 | relay_log_file = 'relay_log_name' #中继日志 | relay_log_pos = relay_log_pos | master_ssl = {0|1}#是否使用ssl功能 | master_ssl_ca = 'ca_file_name' | master_ssl_capath = 'ca_directory_name' | master_ssl_cert = 'cert_file_name' | master_ssl_key = 'key_file_name' | master_ssl_cipher = 'cipher_list' | master_ssl_verify_server_cert = {0|1} | ignore_server_ids = (server_id_list)#将某些id号忽略掉配置从服务器连接主服务器:
mysql> changemaster to master_host='172.16.18.7',-> master_user='rpuser',-> master_password='rpuser'; (4)启动从服务器线程:
mysql> start slave; (5)查看从服务器工作状态
mysql> showslave status\g***************************1. row ***************************slave_io_state: waiting formaster to send event#i/o状态;接受主服务器发送状态master_host: 172.16.18.7#主服务器用户账号master_user: rpuser#用户master_port: 3306#默认监听端口connect_retry: 60#重试时间间隔master_log_file: mysql-bin.000002 #读取的二进制日志文件read_master_log_pos: 107#事件位置relay_log_file:relay-mysql.000003 #当前读取的中继日志文件relay_log_pos: 253relay_master_log_file: mysql-bin.000002slave_io_running: yes#i/o线程已启动slave_sql_running: yes#sql线程已启动replicate_do_db:replicate_ignore_db:replicate_do_table:replicate_ignore_table:replicate_wild_do_table: replicate_wild_ignore_table:last_errno: 0last_error:skip_counter: 0exec_master_log_pos: 107relay_log_space: 966until_condition: noneuntil_log_file:until_log_pos: 0master_ssl_allowed: nomaster_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:nolast_io_errno: 0last_io_error:last_sql_errno: 0last_sql_error: replicate_ignore_server_ids:master_server_id: 17、测试
其它类似信息

推荐信息