powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Спецы ВЫРУЧАЙТЕ зеркалироавние базы
21 сообщений из 21, страница 1 из 1
Спецы ВЫРУЧАЙТЕ зеркалироавние базы
    #35033657
Андрей2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сразу прошу не пинать

sybase вижу в первый раз. Поэтому уровень подготовки наверное ясен. Но есть задача и ее нужно решить.
Есть 2 сервера - основной и резервный. ASE 12.5 + win2003. На основном идет работа, на втором резерв. Задача с интервалом в 20 минут синхронизировать базы. Перерыл весь форум, склоняюсь к батникам. Просто других доступных вариантов не вижу. Подскажите пож-та, кто решал подобную задачу - как это реализовать.

Заранее огромное всем спасибо.
...
Рейтинг: 0 / 0
Спецы ВЫРУЧАЙТЕ зеркалироавние базы
    #35033943
dorian grey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно репликацию настроить.
...
Рейтинг: 0 / 0
Спецы ВЫРУЧАЙТЕ зеркалироавние базы
    #35034059
sn1251
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1 вариант: log shipping, внешним скриптом по расписанию делать дамп журнала транзакций и копировать на резервный сервер (наверно это под батником имели в виду?)

2 вариант: ASE Replicator (java-приложение, входит в состав ASE 12.5). Мороки много.

3 вариант: купить Replication Server, настроить либо выборочную репликацию нужных таблиц, либо базы в целом (warm standby). Совсем не для начинающих, и стоит прилично.
...
Рейтинг: 0 / 0
Спецы ВЫРУЧАЙТЕ зеркалироавние базы
    #35034555
boogiman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если, знаете какие конкретно таблицы нужно проливать. То можно использовать DTS в нём настроить проливку данных из похожих таблиц (скриптами) ! Повесить на шедулер. Dts ставится по умолчанию с MSSQL -2000.
...
Рейтинг: 0 / 0
Спецы ВЫРУЧАЙТЕ зеркалироавние базы
    #35035794
Андрей2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор1 вариант: log shipping, внешним скриптом по расписанию делать дамп журнала транзакций и копировать на резервный сервер (наверно это под батником имели в виду?) база не большая - около 10 ГБ, поэтому хотелось бы делать полный бэкап всей базы, а не только транзакций, хотя может я и не прав.
Осознал что вопрос не совсем корректно задал - исправляюсь. Что бы хотелось видеть:
1. Бат файл запуск котрого позволяет провести ВЫГРУЗКУ базы в файл в опр каталог с опр именем
2. Бат файл запуск котрого позволяет провести ЗАГРУЗКУ базы в файл в опр каталог с опр именем
3. соответственно эти батники находятся на разных серверах - 1 на основном, 2 на резервном. Вызывать их хочу виндовым шедулером.

Просто есть софт, сейчас бэкап идет руками - напрягает, плюс руководство хочет уменьшить интервал простоя в случае краха до 20 мин потеряной информации. С sybase разбираться нет времени, да и не пригодится мне это как сисадмину никогда. Поэтому уж выручайте пож-та. Подскажите как эти батники написать :)
...
Рейтинг: 0 / 0
Спецы ВЫРУЧАЙТЕ зеркалироавние базы
    #35035804
Андрей2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
P.S. под Бат файлом подразумевается ***.bat
...
Рейтинг: 0 / 0
Спецы ВЫРУЧАЙТЕ зеркалироавние базы
    #35036185
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для выгрузки:
Код: plaintext
1.
set TABLES=table1 table2 table3
for %%t in (%TABLES%) do bcp mydb.dbo.%%t out %%t.txt -c -SMyServer -Uuser -Ppassword
И загрузка почти тоже самое, только учти порядок таблиц, чтобы внешние ключи не нарушались:
Код: plaintext
1.
set TABLES=table1 table2 table3
for %%t in (%TABLES%) do bcp mydb.dbo.%%t in %%t.txt -c -SMyServer -Uuser -Ppassword -E
...
Рейтинг: 0 / 0
Спецы ВЫРУЧАЙТЕ зеркалироавние базы
    #35036283
Владислав Ромащенко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C:\sybase\sqladv-12_5\sqladv.exe -Sимя_сервера -Usa -Pпароль -G -ic:\имя_файла.sql
Содержание имя_файла.sql

declare @NowDay char(2), @NowMonth char(2), @Path varchar(255)
if datepart(day,getdate())<10
select @NowDay = "0" + convert(char(1),datepart(day,getdate()))
else
select @NowDay = convert(char(2),datepart(day,getdate()))
if datepart(month,getdate())<10
select @NowMonth = '0' + convert(char(1),datepart(month,getdate()))
else
select @NowMonth = convert(char(2),datepart(month,getdate()))

select @Path = 'compress::6::c:\Sybase\Dump\Имя_базы'+ @NowDay + @NowMonth +'.dmp'
dump database Имя_базы to @Path
...
Рейтинг: 0 / 0
Спецы ВЫРУЧАЙТЕ зеркалироавние базы
    #35036612
sn1251
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей2005база не большая - около 10 ГБ, поэтому хотелось бы делать полный бэкап всей базы, а не только транзакций, хотя может я и не прав.

Просто есть софт, сейчас бэкап идет руками - напрягает, плюс руководство хочет уменьшить интервал простоя в случае краха до 20 мин потеряной информации. С sybase разбираться нет времени, да и не пригодится мне это как сисадмину никогда. Поэтому уж выручайте пож-та. Подскажите как эти батники написать :)
Уточните: важно время простоя или потеря данных не более чем за последние 20 минут? Это разные вещи. Если первое, то это репликация. Если второе, то обычный бэкап.

Проясните ещё: ответственность за восстановление базы тоже на вас? Лучше тогда потратить время на изучение вопроса или отказаться от этой задачи. Написание батника вовсе не самое сложное. Это с микрософтовским SQL сервером средний сисадмин может справиться, а для ASE нужен присмотр DBA.

(и кстати, bcp на живом сервере не подходит, слишком просто несогласованные данные получить)
...
Рейтинг: 0 / 0
Спецы ВЫРУЧАЙТЕ зеркалироавние базы
    #35038342
Андрей2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторC:\sybase\sqladv-12_5\sqladv.exe -Sимя_сервера -Usa -Pпароль -G -ic:\имя_файла.sql
Содержание имя_файла.sql

declare @NowDay char(2), @NowMonth char(2), @Path varchar(255)
if datepart(day,getdate())<10
select @NowDay = "0" + convert(char(1),datepart(day,getdate()))
else
select @NowDay = convert(char(2),datepart(day,getdate()))
if datepart(month,getdate())<10
select @NowMonth = '0' + convert(char(1),datepart(month,getdate()))
else
select @NowMonth = convert(char(2),datepart(month,getdate()))

select @Path = 'compress::6::c:\Sybase\Dump\Имя_базы'+ @NowDay + @NowMonth +'.dmp'
dump database Имя_базы to @Path Спасибо огромное, сделал, дамп получился. На второй сервер перебросил, а как дамп загрузить не знаю. И вообще, чем дамп от выгрузки отличается?

авторУточните: важно время простоя или потеря данных не более чем за последние 20 минут? Это разные вещи. Если первое, то это репликация. Если второе, то обычный бэкап.
Желательно и то и другое, но первичней данные - т.е. бэкап

авторПроясните ещё: ответственность за восстановление базы тоже на вас? Лучше тогда потратить время на изучение вопроса или отказаться от этой задачи. Написание батника вовсе не самое сложное. Это с микрософтовским SQL сервером средний сисадмин может справиться, а для ASE нужен присмотр DBA. Восстановление тоже на мне, т.е. я должен организовать процесс переноса базы с одного сервера на другой по описанному выше алгоритму.
автора для ASE нужен присмотр DBAЗнать бы где найти такого человека ....
...
Рейтинг: 0 / 0
Спецы ВЫРУЧАЙТЕ зеркалироавние базы
    #35040510
Владислав Ромащенко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей2005Спасибо огромное, сделал, дамп получился. На второй сервер перебросил, а как дамп загрузить не знаю. И вообще, чем дамп от выгрузки отличается?

Загрузить дамп нужно с помощью команды load, примерно так
load database Имя_базы from @Path
база на резервном сервере должна быть создана (можно с параметром for load)
дамп - это полная копия БД, со всеми объектами и данными.
для работоспособности работы Вашего приложения с БД на резервном сервере может еще понадобится перенос login с основного сервера. Если это критично - сообщите, поищу процедурку переноса логинов.

если вы собираетесь делать дампы 10ГБ БД каждые 20 мин - могут возникнуть проблемы с производительностью, лучше все-таки делать дамп лога, а полную базу накатывать раз-два в день.
если что - мой icq 462355421

Модератор: 2 Владислав Ромащенко: учимся цитировать...
...
Рейтинг: 0 / 0
Спецы ВЫРУЧАЙТЕ зеркалироавние базы
    #35041171
Vitafresh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Ромащенкодля работоспособности работы Вашего приложения с БД на резервном сервере может еще понадобится перенос login с основного сервера. Если это критично - сообщите, поищу процедурку переноса логинов.
А как насчет переноса не только логинов но и ПАРОЛЕЙ? Есть какие-то сердства, кроме выгрузки системной таблицы syslogins через bcp c основного сервера и апдейта соответствующей таблицы на резервном?
Столкнулись с ситуацией, когда основной и резервный сервер имеют разную архитектуру процессора (например AMD Opteron x86_64 и Intel XENON x86), то хэши паролей не подходят -- соответственно все пароли слетают и резервный сервер теряет свой смысл быстрой подмены :(

P.S. Ответ, наверное, отрицательный но теплится слабая надежда: а вдруг есть чудодейственный способ...
...
Рейтинг: 0 / 0
Спецы ВЫРУЧАЙТЕ зеркалироавние базы
    #35041501
Владислав Ромащенко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vitafresh Владислав Ромащенкодля работоспособности работы Вашего приложения с БД на резервном сервере может еще понадобится перенос login с основного сервера. Если это критично - сообщите, поищу процедурку переноса логинов.
А как насчет переноса не только логинов но и ПАРОЛЕЙ? Есть какие-то сердства, кроме выгрузки системной таблицы syslogins через bcp c основного сервера и апдейта соответствующей таблицы на резервном?
Столкнулись с ситуацией, когда основной и резервный сервер имеют разную архитектуру процессора (например AMD Opteron x86_64 и Intel XENON x86), то хэши паролей не подходят -- соответственно все пароли слетают и резервный сервер теряет свой смысл быстрой подмены :(

P.S. Ответ, наверное, отрицательный но теплится слабая надежда: а вдруг есть чудодейственный способ...

Сейчас же Новый год :) Чудеса случаются :)
bcp master.dbo.syslogins out syslogins.txt -c -t@# -r@#$\n -STOffice -Usa -P"" -esyslogins.err -Jcp1251
(нашел тут на сайте)
получаете текстовый файл, потом желательно из этого текстового файла удалить запись sa - а остальное через isql или еще что загрузить. У нас такое срабатывает. может быть вопрос с кодировкой - тогда пишите, буду вспоминать как мы это обходили
...
Рейтинг: 0 / 0
Спецы ВЫРУЧАЙТЕ зеркалироавние базы
    #35041594
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Ромащенко
получаете текстовый файл, потом желательно из этого текстового файла удалить запись sa - а остальное через isql или еще что загрузить.
"остальное" загружается только через ту же BCP
логин sa удалять по-любому, иначе синхронизируете пароль sa у серверов

можно выгружать в бинарном виде, из вьюшки, которая "смотрит" на master..syslogins и "не видит" логина sa

бинарный перенос пробовали?
...
Рейтинг: 0 / 0
Спецы ВЫРУЧАЙТЕ зеркалироавние базы
    #35041899
Vitafresh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для переноса непосредственно логинов на основном сервере генерятся скрипты, которые потом применяются на резервном, что-то вроде:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
exec sp_addlogin 'user01', 'zxcvbn' ,@fullname = 'ФИО юзера',@defdb = 'dbname',@deflanguage = 'us_english' 
go 

grant role Operator to user01
go 

exec sp_modifylogin user01 , 'add default role' , Operator
go

А вот для синхронизации паролей на основном сервере:
1. Выбираем логины с паролями во временную табличку
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
set quoted_identifier off
go

use tempdb
go

if exists (select  1 
            from  sysobjects
            where  id = object_id('t_syslogins')
            and    type = 'U')
   drop table t_syslogins
go


Select suid,name,password into t_syslogins
       from  master..syslogins
where name not in ('sa','adm','mon_user','probe')
go

2. Выгружаем с помощью bcp
Код: plaintext
bcp.exe tempdb..t_syslogins out d:\t_syslogins.dat -U sa -P -S SERV1 -c -Jcp866 >> d:\bcp_logins.txt


На резервном сервере:
1.Загружаем во временную табличку
Код: plaintext
bcp.exe tempdb..t_syslogins in D:\t_syslogins.dat -U sa -P -S SERV2 -c -Jcp866 >> D:\logins_in.txt

2. Апдейтим пароли
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
use master
go
set quoted_identifier off
go
sp_configure "allow updates to system tables",  1 
go

use tempdb
go
create unique index ncsyslogins on t_syslogins (name)
go


update master..syslogins 
	set master..syslogins.suid=master..syslogins.suid+ 10000 
	where master..syslogins.name not in ('sa','adm', 'mon_user','probe')
go

update master..syslogins 
	set master..syslogins.password = t_syslogins.password,
	    master..syslogins.suid = t_syslogins.suid
       from t_syslogins, master..syslogins
       where t_syslogins.name = master..syslogins.name
         and master..syslogins.name not in ('sa','adm','mon_user','probe')
go

Так вот если оба сервера одинаковой архитектуры, то все работает прекрасно. А вот если нет, то пароли "слетают", т.е. хэши паролей не подходят, причем даже если на обоих серверах одинаковая операционная система но с разной разрядностью (например, RedHat x86 и RedHat x86_64).

Вот я и решил узнать насчет других "чудодейственных" методов окромя bcp, ведь не может быть, чтобы никто не озадачивался переводом своих серверов на новую платформу с переносом всех пользователей...


komrad бинарный перенос пробовали?
Что имеется в виду?
...
Рейтинг: 0 / 0
Спецы ВЫРУЧАЙТЕ зеркалироавние базы
    #35042144
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vitafresh
Вот я и решил узнать насчет других "чудодейственных" методов окромя bcp, ведь не может быть, чтобы никто не озадачивался переводом своих серверов на новую платформу с переносом всех пользователей...


komrad бинарный перенос пробовали?
Что имеется в виду?

имеется ввиду ключ -n (вместо -с), но он в данном случае не подходит - только что освежил в голове мануал

еще идея:
поднять в базу test на новом сервере бекап базы master с исходного - хэши должны конвертнуться под новую платформу (имхо)
как база отресторится, перенести данные либо insert-ом, либо bcp out/in
...
Рейтинг: 0 / 0
Спецы ВЫРУЧАЙТЕ зеркалироавние базы
    #35042152
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad Vitafresh
Вот я и решил узнать насчет других "чудодейственных" методов окромя bcp, ведь не может быть, чтобы никто не озадачивался переводом своих серверов на новую платформу с переносом всех пользователей...


komrad бинарный перенос пробовали?
Что имеется в виду?

имеется ввиду ключ -n (вместо -с), но он в данном случае не подходит - только что освежил в голове мануал

еще идея:
поднять в базу test на новом сервере бекап базы master с исходного - хэши должны конвертнуться под новую платформу (имхо)
как база отресторится, перенести данные либо insert-ом, либо bcp out/in
+ первая производная от идеи:
если базу master сервер откажется поднимать куда-либо принципиально, то на исходном сервере создать базу test, скопировать туда таблицу master..syslogins, забекапить базу test, перенести дампом на новый сервер и там уже перелить в новый master..syslogins необходимых пользователей и их пароли
...
Рейтинг: 0 / 0
Спецы ВЫРУЧАЙТЕ зеркалироавние базы
    #35042639
Vitafresh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверил обе идеи.

В первом случае база master хоть и затянулась в temp2, но без всех системных таблиц ей присущих (syslogins, sysroles и т.п.)
А во втором случае со скопированной табличкой master..syslogins тоже все поднимается, но поле password varbinary(30) никак не конвертится, остается в неизменном виде.

Так что, наверное, придется распрощаться с мечтой о переносе юзеровских паролей и поступить как советуют товарищи по оружию (Олегу привет :-) )
А именно: в административном порядке по звонку менять пароль и открывать доступ юзерам.
...
Рейтинг: 0 / 0
Спецы ВЫРУЧАЙТЕ зеркалироавние базы
    #35057469
0rc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно еще подправить sp_addlogin чтобы она сохраняла пароль и логин в стороннюю табличку, которая позволит нагенерить скрипт на изменение паролей... хотя конечно дырка в безопасности :)
и из перечня "сохраняемых" логинов убрать логины администраторов
...
Рейтинг: 0 / 0
Спецы ВЫРУЧАЙТЕ зеркалироавние базы
    #35057749
Vitafresh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересный вариант...

Но, наверное, я все-таки своими грязными лапами не буду лезть в системные процедуры :)

Не дает нам Sybase средств для цивилизованного переноса -- будут логины на рабочем сервере жить своей жизнью, а на архивном -- своей.
...
Рейтинг: 0 / 0
Спецы ВЫРУЧАЙТЕ зеркалироавние базы
    #35061997
Vitafresh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0rcможно еще подправить sp_addlogin чтобы она сохраняла пароль и логин в стороннюю табличку, которая позволит нагенерить скрипт на изменение паролей... хотя конечно дырка в безопасности :)
и из перечня "сохраняемых" логинов убрать логины администраторов
Кстати, даже этот вариант не прокатывает в случае, если после заведения пользователя клиентское приложение при первом входе предлагает сменить пароль (а именно так в большинстве случаев и происходит). И если пароль меняется не системной процедурой sp_password, а непосредственным вызовом функции
Код: plaintext
select @returncode = set_password(@caller_password, @new_password, @loginame) 
В этом случае нужно только патчить приложение, что не представляется возможным.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Спецы ВЫРУЧАЙТЕ зеркалироавние базы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]