Postgresql Slony

از ویکی پارس پویش
پرش به: ناوبری, جستجو

ایجاد یک بک آپ دیتابیس پست گرس بوسیله‌رپلیکشن


اول از هم مطمثن شوید که دو سرور دارای زمان یکسان باشند. حتما زمان را با سرویس ان تی پی یکسان کنید. وبسته‌های زیر را نصب کنید:

ntpdate  -b -u 216.52.237.153 213.239.197.201 213.222.11.21 
apt-get install postgresql-8.3-slony1 slony1-bin

حتما این متغیر را ست کنید و در پرونده‌ی زیر ذخیره کنید.

export PGTZ='GMT'
 
vi ~/.bashrc 
export PGTZ='GMT'

این فایل را ایجاد کرده:


$ vi /etc/slony1/slon_tools.conf

if ($ENV{"SLONYNODES"}) {                     
    require $ENV{"SLONYNODES"};               
} else {                                      
    $CLUSTER_NAME = 'IBSng_cluster';          
    $LOGDIR = '/var/log/slony1';              
    $MASTERNODE = 1;                          
    add_node(node     => 1,                   
             host     => '192.168.8.52',      
             dbname   => 'IBSng',             
             port     => 5432,                
             user     => 'postgres',          
             password => '');                 

    add_node(node     => 2,
             host     => '192.168.8.53',
             dbname   => 'IBSng',       
             port     => 5432,          
             user     => 'postgres',    
             password => '');           


}


$SLONY_SETS = {

    "set1" => {
        "set_id" => 1,
        # foldCase => 0,
        "table_id"    => 1,
        "sequence_id" => 1,

        "pkeyedtables" => [
'isp',                                                         
'isp_deposit_change',                                          
'admin',                                                       
'admin_perms',                                                 
'admin_perm_templates',                                        
'admin_perm_templates_detail',                                 
'ippool',                                                      
'ippool_ips',                                                  
'ras',                                                         
'ras_ports',                                                   
'ras_attrs',                                                   
'ras_ippools',                                                 
'groups',                                                      
'group_attrs',                                                 
'users',                                                       
'persistent_lan_users',                                        
'add_user_saves',                                              
'add_user_save_details',                                       
'user_attrs',                                                  
'caller_id_users',                                             
'user_serials',                                                
'defs',                                                        
'ibs_states',                                                  
'credit_change',                                               
'credit_change_userid',                                        
'connection_log',                                              
'connection_log_internet_details',                             
'connection_log_voip_details',                                 
'connection_log_details',                                      
'user_deposit_change',                                         
'bw_interface',                                                
'bw_node',                                                     
'bw_leaf',                                                     
'bw_leaf_services',                                            
'bw_static_ip',                                                
'charges',                                                     
'charge_rules',                                                
'charge_rule_attrs',                                           
'user_audit_log',                                              
'internet_onlines_snapshot',                                   
'voip_onlines_snapshot',                                       
'internet_bw_snapshot',                                        
'group_internet_bw_snapshot',                                  
'isp_internet_bw_snapshot',                                    
'user_messages',
'admin_messages',
'ias_event',                                                   
'ias_event_extended',                                          
'web_analyzer_log',                                            
'voip_tariff',                                                 
'voip_prefix_group',                                           
'voip_prefix_group_attrs',                                     
'voip_tariff_prefix',                                          
'mc_providers',                                                
'mc_provider_attrs',
'provider_endpoint_groups',
'provider_endpoints',
'mc_message_queue',
'mc_user_receive_message',
'mc_isp_receive_message',
'mc_user_send_message',
'mc_isp_send_message',
'mc_remote_request',
'mc_activation_code',
'notification_profile',
'notification_rule',
'online_payment_gateway',
'online_payment_gateway_attributes',
'online_payment_payments',
'online_payment_payment_attributes',
'temporary_extend_log',
'caller_id_blacklist',
'routing_profile',
'voip_provider',
'voip_route',
'voip_route_provider',
'voip_route_prefix',
'voip_providers_snapshot',
'extra_charge_profile',
'extra_charge_rule',
'location_region',
'location_province',
'location_city',
'location_telco_center',
'location_device',
'location_port',
'batch',
'voucher',
'ldap_domain',
'ldap_server',
'audit_log',
'admin_otp',
                           ],                                                                                                               
        # For tables that have unique not null keys, but no primary                                                                         
        # key, enter their names and indexes here.                                                                                          
        "keyedtables" => {                                                                                                                 
            'voip_users' => 'voip_users_user_id',                                                                                                 
            'normal_users' => 'normal_users_user_id',                                                                                                 
        },                                                                                                                                 

        #"serialtables" => ["mc_activation_code",
        #                #"mc_provider_attrs",    
        #                #'mc_remote_request',    
        #                'normal_users',         
        #                'voip_users',           
        #                ],                      

        "sequences" => [
'isp_id_seq',                                                  
'admin_id_seq',                                                
'admin_perm_template_id',                                      
'ippool_id_seq',                                               
'ras_id_seq',                                                  
'groups_group_id_seq',                                         
'add_user_save_id_seq',                                        
'users_user_id_seq',                                           
'user_serials_serial_id',                                      
'credit_change_id',                                            
'connection_log_id',                                           
'user_deposit_change_id',                                      
'bw_interface_interface_id_seq',                               
'bw_node_node_id_seq',                                         
'bw_leaf_leaf_id_seq',                                         
'bw_leaf_services_leaf_service_id_seq',                        
'bw_static_ip_bw_static_ip_id_seq',                            
'charges_charge_id_seq',                                       
'charge_rules_charge_rule_id_seq',                             
'user_messages_message_id',
'admin_messages_message_id',
'ias_event_event_id',
'web_analyzer_log_log_id',
'voip_tariff_voip_tariff_id_seq',
'voip_prefix_group_voip_tariff_prefix_id_seq',
'voip_tariff_prefix_voip_tariff_prefix_id_seq',
'mc_providers_provider_id',
'provider_endpoint_groups_ep_group_id',
'provider_endpoints_end_point_id',
'mc_message_id',
'mc_message_pack_id',
'notification_profile_id_seq',
'notification_rule_id_seq',
'online_payment_unique_id_seq',
'online_payment_gateway_id',
'online_payment_payment_id',
'temporary_extend_log_id',
'caller_id_blacklist_id',
'routing_profile_routing_profile_id_seq',
'voip_provider_voip_provider_id_seq',
'voip_route_voip_route_id_seq',
'voip_provider_prefix_voip_provider_prefix_id_seq',
'extra_charge_profile_id_seq',
'extra_charge_rule_id_seq',
'location_region_region_id_seq',
'location_province_province_id_seq',
'location_city_city_id_seq',
'location_telco_center_telco_center_id_seq',
'location_device_device_id_seq',
'location_port_port_id_seq',
'batch_id_seq',
'voucher_id_seq',
'ldap_domain_id',
'ldap_server_id',
'audit_log_audit_log_id_seq',
'admin_otp_id_seq',
'isp_deposit_change_isp_deposit_change_id_seq',
                        ],
    },
};
if ($ENV{"SLONYSET"}) {
    require $ENV{"SLONYSET"};
}

# Please do not add or change anything below this point.
1;

قفط در قسمت:

add_node(node     => 1,                   
             host     => '192.168.8.52',      
             dbname   => 'IBSng',             
             port     => 5432,                
             user     => 'postgres',          
             password => '');

آپی سرور را به سرور اصلی تغییر می‌دهی. بعد در قسمت زیر هم در نود ۲ آپی سرور را به آی‌پی سرور بک آپ عوض می‌کنیم:


add_node(node     => 2,
             host     => '192.168.8.53',
             dbname   => 'IBSng',       
             port     => 5432,          
             user     => 'postgres',    
             password => '');      

این فایل را در سرور پک آپ هم در همان مسیر ذخیره کنید.


فایل زیر را در هر دو سرور ویرایش کنید:


vi /etc/postgresql/8.3/main/pg_hba.conf

host    all     all     192.168.8.52/32    trust
host    all     all     192.168.8.53/32    trust


دقت کنید که حتما از آی پی اینترفیس در اینجا و فایل قبلی استفاده کنید . و از localhost یا ۱۲۷.۰.۰.۱ استفاده نکنید که در موقع رپلیکشن به سرور های دیگر به مشکل برمی خورید.


برای شروع کار اول باید اطلاعات لازم را برای شروع جمع‌اوری کنید. برای شروع از دستور‌های زیر استفاده کنید:


slonik_init_cluster  | slonik 

سپس در مسیر /etc/default/slony1 مقادیر زیر را به ترتیب در سرور اصلی و پشتیبان قرار دهید

SLON_TOOLS_START_NODES="1"
SLON_TOOLS_START_NODES="2"

دستور بعدی جدول‌ها رابه مجموعه اضافه می‌کند:

slonik_create_set 1  | slonik

دستور بعدی سرور دوم را بعنوان برده‌ی اولی معرفی می‌کند.

 
slonik_subscribe_set 1 2 | slonik


رپلیکشن انجام شده است. محل قرار گیری لاگ‌ها در اینجا می‌باشد

/var/log/slony1/

اگر مشکلی برای سرو اصلی پیش‌امد حتما مطمثن شوید که سرور اصلی بعد از عوض کردن نقش‌هاران نیست . چون ممکن است که هر دو سرو بعد از عوض کردن نقش خود را به عنوان سرور اصلی بشناسند و مشکل پیش بیاید.

برای جابجا کردن تقش بر روی سرور بک‌آپ از دستور زیر استفاده کنید:

slonik_failover 1 2

لطفا توجه داشته باشید که این برای مواقع اضطراری است. در این حالت شما ممکن است که اطلاعاتی را که هنوز در سرور اصلی قبل وجود دارد را از دست بدهید. برای جابجا کردن سرور درحالت عادی از دستور زیر استفاده کنید:

slonik_move_set 1   1 2 | slonik

بعد از جابجایی تغییر لازم را در فایل بالا بدهید.

ابزارهای شخصی

گویش‌ها
فضاهای نام
عملکردها
گشتن
جعبه‌ابزار